#include#includevoidmain(){inti;srand((unsigned)time(NULL));i=rand()%100;}這樣產生的隨機數就是0-99之間的,這二個函數的工作過程如下:1)首先給srand" />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

C語言中產生隨機數

系統 1899 0

問:

C語言中產生隨機數的函數是什么?

C語言中產生隨機數的函數是什么?(好象有兩個)以及這兩個函數的頭文件是什么?

問題補充: rand和srand有什么區別沒?

答:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main()
{
int i;
srand((unsigned)time(NULL));
i = rand() % 100;
}
這樣產生的隨機數就是0-99之間的,
這二個函數的工作過程如下:
1) 首先給srand()提供一個種子,它是一個unsigned int類型,其取值范圍從0~65535;
2) 然后調用rand(),它會根據提供給srand()的種子值返回一個隨機數(在0到32767之間)
3) 根據需要多次調用rand(),從而不間斷地得到新的隨機數;
4) 無論什么時候,都可以給srand()提供一個新的種子,從而進一步“隨機化”rand()的輸出結果。

------------------------------------------------------------------------------------------------

#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下的隨機數生成
/* --------------------------------------------
*描述: 在Windowsserver2003,vs.net2003下調試通過
*
*作者:e.Studio·zhzkl
*參考:rfc4122
*-------------------------------------------
*/

#i nclude
< stdio.h >
#i nclude
< stdlib.h >
#i nclude
< conio.h >

#define A3

int AdvancedLinearCongrutial( int x, int a, int b, int c, int m, int max);


int main( int argc, char *
argv[])
{
char * nums = argv[ 1 ]; // 取得參數

char mynums[ 10 ]; // 預定義10位長度的字符數組,單片機為8位應該不會超過這個范圍了
int res = 0 ,pos = 0 ,length = 0 ;

//
將字符流轉換為Int
//
while (nums[pos] != ' /0 '
)
{
length
= length + 1
;
pos
= pos + 1
;
}

pos
= 0 ;
length
= length - 1
;

while (nums[pos] != ' /0 '
)
{
mynums[length
- pos] =
nums[pos];
pos
++
;
}


pos
= 0 ;
while (nums[pos] != ' /0 '
)
{
int m = 1
;
for ( int k = 0 ;k < pos;k ++
)
{
m
= m * 10
;
}


res
= res + (mynums[pos] - 48 ) * m;
pos
= pos + 1
;
}


// 定義隨機種子
//
srand(res);
int x = rand(),a = 2 ,b = 3 ,c = 5 ,m = 65536
;

// 改進的線性同余算法

int i = AdvancedLinearCongrutial(x,a,b,c, 65536 ,rand() % 100 );
printf(
" i=%d "
,i);
printf(
" /tres=%d "
,res);
return
i;
}


// 改進的線性同余算法
int AdvancedLinearCongrutial( int x, int a, int b, int c, int m, int max)
{
for ( int i = 0 ;i < max;i ++
)
{
a
=
A;
for ( int j = 0 ;j < i;j ++
)
{
a
*=
A;
}

x
= (a * x + (a - 1 ) * c / b) % m;
}


return x;
}

C語言中產生隨機數


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!??!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 免费视频片在线观看大片 | 四虎影音| 热99精品| 福利影院在线看 | 精品久久影院 | 夜夜摸夜夜爽 | 国产色视频一区 | 日本特黄aa一大片 | 亚洲欧美一区二区三区另类 | 一区二区三区欧美大片 | 国产大尺度吃奶无遮无挡网 | 国产亚洲第一页 | 超碰97青青草 | 欧美日韩国产欧美 | 一区亚洲 | 欧美日韩免费在线观看视频 | 欧美日韩中文在线 | 草操影院 | 国产激情视频 | 欧美一级www片免费观看 | 欧美国产视频 | 欧美一级夜夜爽www 美女污视频网站 | a天堂资源在线观看 | 正规成人啪啪 | 一区二区三区毛片 | 国产精品极品美女在线观看免费 | 欧美一级美国一级 | 久碰香蕉精品视频在线观看 | 亚洲免费网站 | 毛片a片 | 国产福利网 | 成人视品 | 亚洲伊人网站 | 欧美久久久久 | 亚洲精品在线网站 | 亚洲欧洲精品成人久久奇米网 | 日本黄色大片免费看 | 日韩有码一区 | 精品一区二区视频 | 亚洲精品97福利在线 | 5月婷婷6月丁香 |