網(wǎng)站首頁 編程語言 正文
rand()函數(shù)
生成隨機數(shù)使用rand()函數(shù)
函數(shù)原型:
int rand (void); 頭文件<stdlib.h>
初步使用
?目前該“隨機數(shù)”貌似成功生成
生成0到99的隨機數(shù)
再次運行
?發(fā)現(xiàn)問題
大家有木有發(fā)現(xiàn)其實這三次的運行結果生成的隨機數(shù)其實是一樣的,沒錯,我說的就是三次,
第一次是41 18467 6334 26500 19169 15724 11478 29358 26962 24464,將這些數(shù)對100求余
不就是?41 67 34 0 69 24 78 58 62 64了嗎?
這些看似偶然的結果并不是精巧設計的,而是rand()函數(shù)需要一顆種子才能正確的生成我們所需要的隨機數(shù),沒有該種子那么使用rand()永遠都是一樣的結果
查看rand()函數(shù)的官方文檔
?RAND_MAX的值是0x7fff,十進制即?32767?,可見rand()函數(shù)只會產(chǎn)生0到32767之間的偽隨機整數(shù)
這個數(shù)字是由一個算法生成的,該算法在每次調用時返回一系列明顯無關的數(shù)字。該算法使用種子來生成序列,通過函數(shù)srand將序列初始化為特定的值。
官方指明了使用srand函數(shù)來生成一個種子
srand()函數(shù)
srand的官方介紹
發(fā)現(xiàn)srand函數(shù)原型是void srand(unsigned int seed)
,其中seed即種子的意思,所謂的種子無非就是一個無符號整型。
頭文件<stdlib.h>
初步使用srand()
?
?這次生成的隨機數(shù)與前面的確實不一樣
再次運行
?
發(fā)現(xiàn)結果并沒有改變,這是咋回事呢?
發(fā)現(xiàn)問題
其實沒有使用srand之前,rand函數(shù)本身就有默認的種子,而srand只是將其默認的種子改成了100而已,下次運行該代碼種子還是100,只要種子不變,那么生成的隨機數(shù)永遠都是與該種子對應的,因此你要想每次運行都可以得到不同的隨機數(shù),那就只能保證每次運行的種子不一樣,這樣問題就來了,種子也是要隨機的,這不就套娃了嗎?還好每次運行的時間是不一樣的,因此只需要將生成的種子與時間掛鉤就能保證每次運行的種子不一樣,因為時間包含了年月日時分秒,就保證了每一刻的時間是絕對不會相同的
解決問題:time函數(shù)
?頭文件<time.h>
文檔中的核心內容就是給time傳個空指針NULL進去,它就將當前的時間以time_t類型進行返回,其中time_t其實就是int,只不過被用typedef進行了類型重命名了而已,
小伙伴是否會有疑問一個時間怎么以整型進行表示呢?這里就涉及到了時間戳的概念
時間戳
時間戳: 當前時間與計算機起始時間的差值,單位是秒。
計算機的起始時間:1970-01-01 08:00:00(北京時間)
?
?
原文鏈接:https://blog.csdn.net/qq_42591783/article/details/121376788
相關推薦
- 2023-02-12 C++?STL之string的模擬實現(xiàn)實例代碼_C 語言
- 2022-07-11 spring boot中動態(tài)代理導致自定義注解掃描失敗以及解決辦法
- 2022-11-07 如何使用python生成大量數(shù)據(jù)寫入es數(shù)據(jù)庫并查詢操作_python
- 2022-04-18 html2canvas 畫圖出現(xiàn)空白的情況,引出圖片跨域的相關問題
- 2022-07-16 MyBatis查詢時數(shù)據(jù)表字段名與實體類屬性名不一致
- 2022-06-22 如何利用Android仿微博正文鏈接交互效果_Android
- 2022-04-08 iOS開發(fā)實現(xiàn)簡單計算器功能_IOS
- 2023-01-01 關于Python去除字符串中空格的方法總結_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結構-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支