問: C語言中產生隨機數的函數是什么? C語言中產生隨機數的函數是什么?(好象有兩個)以及這兩個函數的頭文件是什么?
問題補充:
rand和srand有什么區別沒?
答:
#include <stdio.h>
------------------------------------------------------------------------------------------------
#include <stdlib.h>
#include <stdio.h> #include <time.h> int i=0; float n; int n1; while(i<1) { n=rand(); if(n>0&&n<10.0) i++; } n1=(int) n;
------------------------------------------------------------------------------------------------
調用rand()函數需要的頭文件是 <stdlib.h>
#include <stdlib.h> #include <stdio.h> #include <time.h> void main( void ) { int i; srand( (unsigned)time( NULL ) ); for( i = 0; i < 10;i++ )//產生10個隨機數 printf( " %6d/n", rand() ); }
------------------------------------------------------------------------------------------------
算法2:線性同余法
1)將種子設為X0, 2)用一個算法X(n+1)=(a*X(n)+b) mod c產生X(n+1) 一般將c取得很大,可產生0到c-1之間的偽隨機數 該算法的一個缺點是會出現循環。 給個C的程序 unsigned int seed = 0; //seed 為種子,要設為全局變量 void mysrand(int i) //初始化種子 { seed = i; } int myrand() //產生0--32767之間的隨機數 { seed = (1000*seed+2008) % 32768; return seed; } 調用實例 #include <time.h> main() { int a; mysrand(time(0)); a = myrand(); return 0; }
------------------------------------------------------------------------------------------------
下面關于一個另問題的解答:
C語言庫函數中的rand()的用法??
#include <stdlib.h>
#include <stdio.h> #include<conio.h> int main(void) { int i; printf("Ten random numbers from 0 to 99/n/n"); for(i=0; i<10; i++) printf("%d/n", rand()%100); getch(); return 0; } 為什么每次運行的結果都是一樣的??關了重啟結果還是一樣!! 這結果哪像是隨機啊?!! 求高手幫忙解釋一下這個庫函數的用法?如果能解釋一下上面結果不隨機問題最好.謝謝!
答:
函數rand所產生的隨機數實際上是偽隨機數,即反復調用函數rand所產生的一系列數似乎是隨機的,但每次執行程序所產生的序列則是重復的。要產生真正的隨機數序列,必須在每一次運行前為rand函數提供不同的種子,這是由srand函數提供的。
所以加上srand(time(NULL))就可以產生真正的隨機數了。 #include <stdlib.h> #include <stdio.h> #include<conio.h> #include <time.h> int main(void) { int i; srand(time(NULL)); printf("Ten random numbers from 0 to 99/n/n"); for(i=0; i<10; i++) printf("%d/n", rand()%100); getch(); return 0; }
------------------------------------------------------------------------------------------------
在C51下的隨機數生成
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
