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

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