當前位置:首頁 » 編程語言 » c語言隨機函數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言隨機函數

發布時間: 2022-01-12 14:35:27

c語言隨機函數使用

randomize在VC6下無法使用的;

不過你可以用:srand(time(NULL));代替,就可以產生偽隨機數了

這是要隨機出1000以內的數用法:rand()%1000;

修改後的程序,請注意看後面的注釋:

#include<stdlib.h>
#include<time.h>//加上頭文件printf用
#include<stdio.h>//加上頭文件time用

voidmain()
{
inti,x,k=0;
srand(time(NULL));//用srand函數替換了原來的randomize
for(i=0;i<100;i++)
{
x=rand()%1000;//用rand函數替換了原來的random
if(x>=200&&x<300)
{
k++;
printf("%d",x);
}
}
printf(" total=%d ",k);
}

這是運行的結果,有問題再問,滿意請採納

㈡ 關於C語言隨機函數

把 srand( time(0) ); 放在循環外每次產生隨機數的種子也是一樣的啊,為什麼產生的隨機數就不一樣了?
因為隨機函數只需要一個種子就能產生一系列的隨機數,並不是每個隨機數都需要一個種子。

你把 srand(time(0)) 放到循環前面就可以了。
原因: time(0)返回的是系統的時間(從1970.1.1午夜算起),單位:秒,而那個循環運行起來耗時連0.000001秒都不到! 也就是說,srand(time(0)) 連著4次的種子是一樣的,種子一樣,生產的隨機數當然是一樣了。

如果你在把srand()放循環裡面,在中間加個sleep函數,消耗一點時間(間隔大於1秒),那麼生成的rand 就不一樣了.但是這樣做很不好,連著兩次用srand生成的種子,間隔一樣,生產的隨機數間隔有會有規律性。

另:因為兩次運行同一程序的時間肯定是不一樣的,所以把srand放在循環前面可以得不同的種子,這樣才能得到你想要的。

㈢ c語言的隨機函數怎樣用、

就像是樓上寫的
通常隨機函數rand()
帶有時間種子的隨機函數srand(time(0))在用rand()實現。
記住加相關頭文件

㈣ c語言,如何產生隨機數

1、第一步,先定義int一個數組和int一個指針變數。

㈤ C語言中srand隨機函數怎麼用

srand()函數是C語言中產生隨機數的一個函數。


函數原型: void srand(unsigned seed)
功 能: 產生隨機數的起始發生數據,和rand函數配合使用
頭 文 件: stdlib.h time.h

舉例如下:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
intmain(void)
{
inti;
time_tt;
srand((unsigned)time(&t));
printf("Tenrandomnumbersfrom0to99 ");
for(i=0;i<10;i++)
printf("%d ",rand()%100);
return0;
}

運行程序,會發現每次產生的隨機數都不一樣。這是因為這里採用了時間作為種子,而時間在每時每刻都不相同,所以就產生了"隨機"的隨機數了。所以,要想產生不同的隨機數,在使用rand之前需要先調用srand。

㈥ C語言 隨機函數

i++;是i=i+1;的縮寫,c++之所以後面有++,就是因為有這樣的縮寫。
rand()是個函數,每次調用會給你返回一個unsigned int數,即無符號整數,具體這個函數可以網路rand(),返回的數用偽隨機演算法,在你看起來是隨機變化的,范圍在0~4294967295之間
%是c++的整數運算符,如果寫a%b就是求a除以b以後的余數
rand()生成的數大於0~100之間的范圍,rand()%100就會生成在0~99之間的隨機整數
由於題目要求生成1~100之間的整數,所以用表達式rand()%100+1
如果想生成[0~3000)的隨機數可以用表達式rand()%3000
如果想生成[a,b]范圍的隨機數,可以用表達式rand()%(b-a+1)+a來生成
比如要生成10~20之間的隨機數,包含10和20在內,那麼表達式是rand()%(20-10+1)+10

㈦ c語言隨機函數

應該在產生隨機數之前加一個產生隨機種子的函數:randomize

㈧ C語言中取隨機數的函數

1. 基本函數

在C語言中取隨機數所需要的函數是:

int rand(void); void srand (unsigned int n);

rand()函數和srand()函數被聲明在頭文件stdlib.h中,所以要使用這兩個函數必須包含該頭文件:

#include <stdlib.h>

2. 使用方法

rand()函數返回0到RAND_MAX之間的偽隨機數(pseudorandom)。RAND_MAX常量被定義在stdlib.h頭文件中。其值等於32767,或者更大。

srand()函數使用自變數n作為種子,用來初始化隨機數產生器。只要把相同的種子傳入srand(),然後調用rand()時,就會產生相同的隨機數序列。因此,我們可以把時間作為srand()函數的種子,就可以避免重復的發生。如果,調用rand()之前沒有先調用srand(),就和事先調用srand(1)所產生的結果一樣。

舉個例子,假設我們要取得0~10之間的隨機整數(不含10本身):

/* 例1:不指定種子的值 */
for (int i=0; i<10; i++) { printf("%d ", rand()%10); }
每次運行都將輸出:1 7 4 0 9 4 8 8 2 4
/* 例2:指定種子的值為1 */
srand(1); for (int i=0; i<10; i++) { printf("%d ", rand()%10); }
每次運行都將輸出:1 7 4 0 9 4 8 8 2 4
例2的輸出結果與例1是完全一樣的。
/* 例3:指定種子的值為8 */ srand(8); for (int i=0; i<10; i++) { printf("%d ", rand()%10); }
每次運行都將輸出:4 0 1 3 5 3 7 7 1 5
該程序取得的隨機值也是在[0,10)之間,與srand(1)所取得的值不同,但是每次運行程序的結果都相同。
/* 例4:指定種子值為現在的時間 */ srand((unsigned)time(NULL)); for (int i=0; i<10; i++) { printf("%d ", rand()%10); }
該程序每次運行結果都不一樣,因為每次啟動程序的時間都不同。另外需要注意的是,使用time()函數前必須包含頭文件time.h。

3. 注意事項
求一定范圍內的隨機數。
如要取[0,10)之間的隨機整數,需將rand()的返回值與10求模。
randnumber = rand() % 10;
那麼,如果取的值不是從0開始呢?你只需要記住一個通用的公式。
要取[a,b)之間的隨機整數(包括a,但不包括b),使用:
(rand() % (b - a)) + a
偽隨機浮點數。
要取得0~1之間的浮點數,可以用:
rand() / (double)(RAND_MAX)
如果想取更大范圍的隨機浮點數,比如0~100,可以採用如下方法:
rand() /((double)(RAND_MAX)/100) 其他情況,以此類推,這里不作詳細說明。

㈨ C語言隨機函數怎麼弄

C++的隨機函數
C++/c語言里,是沒有辦法得到一個真正的隨機數序列的.想要等到一個真正的隨機數序列,必須使用特定的隨機數硬體發生器.也就是說,軟體是沒有辦法產生真正的隨機數.因為軟體必須按照一定的邏輯來編寫.既然是按照特定的邏輯(也就是說演算法)來編寫 ,那麼產生的運算結果就是一定的.這一點,就是軟體天生的特性.想想看,如果一個軟體,同樣的代碼喝條件下,每次運行的結果不一樣,那還有誰會用?
所以,在C++/C語言中,就有了"偽隨機數"的概念.意思也就是說,通過一個特定的演算法,產生一個假的隨機數序列.那麼,程序員又希望這個隨機數序列跟接近真正的隨機數序列,也就是希望得到的序列的不一樣,所以有了一個"播種"的概念.
srand(unsgined int seed);
這個函數就是用來"播種"的.通過一個"種子"(SEED),來控制隨機數的序列不一樣.只要種子不一樣,那麼通過rand()得到的隨機數序列就不一樣.反過來說,如果種子一樣,那麼通過srand()得到的隨機數就是一樣的.
srand(0);
for( int i = 0; i < 10; i++)
{
cout<<rand()<<' ';
}

你試著將這個程序執行兩次,你會發現兩次的結果一樣。那是因為,一旦「種子」確定了,那麼這個隨機數序列就確定了。軟體天生的「行為可重復性」決定了這一點。
所以,一般在播種的時候,喜歡用一個隨機的種子.在絕大多數的情況下,會使用當前的系統時間.這個數字在每次程序運行的時候都不一樣.除非你手動的改系統時間.
編程時有時需要隨機輸入一些數,這是調用隨機函數可以完成此相命令.
# include 「stdio.h」
# include 「stdlib.h」
# include 「time.h」 /*需引用的頭文件*/

srand((unsigned)time(NULL)); /*隨機種子*/
n=rand()%(Y-X+1)+X; /*n為X~Y之間的隨機數*/
進一步解釋

srand()設置隨機數種子,rand()得到隨機數
random()的函數原型為int random(int num)
它的作用是Returns an integer between 0 and (num-1)

而randomize的函數原型為void randomize(void)
它的作用是Initializes the random number generator with a random value.

它們的區別是前者限定隨機數的產生范圍,而後者這完全是隨機的,另外使用這兩個函數時
應含入
#include <stdlib.h>
#include <time.h>
頭文件。
一個例子:
用法如下:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

void main( void )
{
int i,k;
srand( (unsigned)time( NULL ) ); //用系統時間當種子,對隨機函數進行初始化
for( i = 0; i < 10;i++ )
{
k=rand()%100; //產生各個隨機數
printf( " k=%d\n", k );
}
}
再抄個~
在VC中設計到隨機數有兩個函數

srand() and rand()

srand() 的作用是是一個種子,提供每次獲得隨機數的基數而已,rand()根據種子而產生隨機數

注意

1:srand() 里的值必須是動態變化的,否則得到的隨機數就是一個固定數

2:其實可以不用寫srand() ,只用rand()就可以了,省事,簡單,例子如下

如果我們想得到一個 0-60的隨機數那麼可以寫成

int i;

i=rand()%60;

就可以了。

當然最好有個統一的標注如下:

int i;

srand((unsigned)time( NULL ));

i=rand()%60;

這樣就OK了

例題隨機取數,取1到99之間
1、#include <iostream.h>
#include <stdlib.h>
#include <time.h>

int main()
{
int n;//n為隨機數
srand(time(NULL));
n=1+rand()%99;
cout<<n;
return 0;
}
2、#include<iostream.h>
#include<stdlib.h>
#include<time.h>

void main()
{
int a;
srand((unsigned) time(NULL));
a=rand()%99+1;
cout<<a;
}
3、#include <iostream.h>
#include <stdlib.h>
#include <time.h>
void main()
{
int j;
srand((unsigned)time(NULL));
loop:
j=rand()%100;
if(j==0)
{
cout<<"error"<<endl;
goto loop;
}
else cout<<j<<endl;
}
4、如果象樓上的你的那種做法做下去
那應該是100%而不是98%
你一定是少了
srand(...........);
其實這個程序也不錯
#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
int counter;
for(counter=0;counter<10;counter++)
{
srand(counter+1);
cout<<"Random number"<<counter+1<<":"<<rand()<<endl;
}
system("pause");
return 0;
}
5、#include <iostream.h>
#include <stdlib.h>

int main()
{
int shu =100;
int n;//n為隨機數
srand(shu);
n=rand() % shu;
cout<<n;
return 0;
}
不拿時間作隨機數,可以設一個種子數不清100這樣就產生0~99間的隨機數。
不過我沒有測試從復率,誰測了告訴我一下。