C语言中生成随机数
主要內容
- rand()函數
- 引入時間戳
- 生成1到100隨機數
rand()函數
1.隨機數生成用rand(),范圍是0到32767
2.rand()在main主函數中一次定義賦值必是一樣的數
#include<stdio.h> #include<stdlib.h>//rand(),srand()等頭文件 int main() {int ret = rand(); int i = 0;do{ printf("%d\n", ret); i++;} while (i<10); }運行結果:
3.由于rand()的隨機數生成在兩次運行的情況下是相同的,類似同一個劇本殺玩兩次內容是一樣的
兩次分別的運行結果
4.所以要使運行兩次內容不一樣,需要srand(unsigned int):設置一個隨機的起點
在main中添加srand(100);
顯示結果發(fā)生變化
因此
5.srand(unsigned int)括號中也需要一個變化的數
引入時間戳
時間戳就是現在的時間與一個電腦設定時間如1970.10.1 10:00:00相差的秒數,是一個不斷變化的數
用time(NULL)接收放入stand()中
srand((unsigned int)time(NULL));//強制轉換一下每次使用前都用srand重新設置一個起點
#include<stdio.h> #include<stdlib.h> #include<time.h>//time對應的頭函數 #include<windows.h>//Sleep()對應的頭文件 void test() {int ret = rand(); srand((unsigned int)time(NULL));printf("%d\n", ret); }int main() {int i = 0;do{ test();i++;Sleep(1000);//延遲一秒,用于展示這么寫的漏洞} while (i<10); }運行展示
產生的相近數字由于每次運行都用srand重新設置了一下。并且每次時間間隔相差1秒
因此
srand((unsigned int)time(NULL));//不宜多次使用最后修改
生成10個隨機數代碼
生成1到100隨機數
由于rand()取值是0到32767
所以rand()取余就是0到99
rand()%100+1 范圍就是1 到 100
//最后生成的10個 1到100隨機數代碼 #include<stdio.h> #include<stdlib.h> #include<time.h> void test() {int ret = rand() % 100 + 1; printf("%d\n", ret); }int main() {srand((unsigned int)time(NULL));int i = 0;do{ test();i++;} while (i<10); }總結
- 上一篇: android 图片轮播带缩略图,超酷响
- 下一篇: 居民水费管理系统