本文目錄一覽:
- 1、在c語言中怎樣使用rand產生100-1000
- 2、c語言怎麼生成隨機數?
- 3、C語言如何生成1~20000000隨機數
- 4、c語言如何生成0到2,000,000,000之間的隨機數
- 5、c語言中如何隨機生成一個 1 到 2千萬 的數
在c語言中怎樣使用rand產生100-1000
建議你先研究下rand的用法。如下:
rand和srand的用法
首先我們要對rand&srand有個總體的看法:srand初始化隨機種子,rand產生隨機數,下面將詳細說明。
rand(產生隨機數)
表頭文件: #includestdlib.h
定義函數 :int rand(void)
函數說明 :
因為rand的內部實現是用線性同餘法做的,他不是真的隨機數,只不過是因為其周期特別長,所以有一定的範圍里可看成是隨機的,rand()會返回一隨機數值,範圍在0至RAND_MAX 間。在調用此函數產生隨機數前,必須先利用srand()設好隨機數種子,如果未設隨機數種子,rand()在調用時會自動設隨機數種子為1。rand ()產生的是假隨機數字,每次執行時是相同的。若要不同,以不同的值來初始化它.初始化的函數就是srand()。
返回值:
返回0至RAND_MAX之間的隨機整數值,RAND_MAX的範圍最少是在32767之間(int),即雙位元組(16位數)。若用unsigned int 雙位元組是65535,四位元組是4294967295的整數範圍。
0~RAND_MAX每個數字被選中的機率是相同的。
範例:
/* 產生介於1 到10 間的隨機數值,此範例未設隨機數種子,完整的隨機數產生請參考
srand()*/
#includestdlib.h
main()
{
int i,j;
for(i=0;i10;i++)
{
j=1+(int)(10.0*rand()/(RAND_MAX+1.0));
printf(“%d “,j);
}
}
執行:
9 4 8 8 10 2 4 8 3 6
9 4 8 8 10 2 4 8 3 6 //再次執行仍然產生相同的隨機數
srand(設置隨機數種子)
表頭文件:#includestdlib.h
定義函數:void srand (unsigned int seed);
函數說明:
srand()用來設置rand()產生隨機數時的隨機數種子。參數seed必須是個整數,通常可以利用geypid()或time(0)的返回值來當做seed。如果每次seed都設相同值,rand()所產生的隨機數值每次就會一樣。
範例
/* 產生介於1 到10 間的隨機數值,此範例與執行結果可與rand()參照*/
#includetime.h
#includestdlib.h
main()
{
int i,j;
srand((int)time(0));
for(i=0;i10;i++)
{
j=1+(int)(10.0*rand()/(RAND_MAX+1.0));
printf(” %d “,j);
}
}
執行:與rand範例比較
5 8 8 8 10 2 10 8 9 9
2 9 7 4 10 3 2 10 8 7
又或:
用”int x = rand() % 100;”來生成 0 到 100 之間的隨機數這種方法是不或取的,比較好的做法是: j=(int)(n*rand()/(RAND_MAX+1.0))產生一個0到n之間的隨機數
int main(void)
{
int i;
time_t t;
srand((unsigned) time(t));
printf(“Ten random numbers from 0 to 99\n\n”);
for(i=0; i10; i++)
printf(“%d\n”, rand() % 100);
return 0;
}
除以上所說的之外,補充一點就是srand這個函數一定要放在循環外面或者是循環調用的外面,否則的話得到的是相同的數字。
MSDN中的例子。
// crt_rand.c
// This program seeds the random-number generator
// with the time, then displays 10 random integers.
//
#include stdlib.h
#include stdio.h
#include time.h
int main( void )
{
int i;
// Seed the random-number generator with current time so that
// the numbers will be different every time we run.
//
srand( (unsigned)time( NULL ) );
// Display 10 numbers.
for( i = 0; i 10;i++ )
printf( ” %6d\n”, rand() );
printf(“\n”);
// Usually, you will want to generate a number in a specific range,
// such as 0 to 100, like this:
{
int RANGE_MIN = 0;
int RANGE_MAX = 100;
for (i = 0; i 10; i++ )
{
int rand100 = (((double) rand() /
(double) RAND_MAX) * RANGE_MAX + RANGE_MIN);
printf( ” %6d\n”, rand100);
}
}
總結:
我們知道rand()函數可以用來產生隨機數,但是這不是真真意義上的隨機數,是一個偽隨機數,是根據一個數,我們可以稱它為種了,為基準以某個遞推公式推算出來的一係數,當這系列數很大的時候,就符合正態公布,從而相當於產生了隨機數,但這不是真正的隨機數,當計算機正常開機後,這個種子的值是定了的,除非你破壞了系統,為了改變這個種子的值,C提供了 srand()函數,它的原形是void srand( int a) 功能是
初始化隨機產生器既rand()函數的初始值,即使把種子的值改成a; 從這你可以看到通過sand()函數,我們是可以產生可以預見的隨機序列,
那我們如何才能產生不可預見的隨機序列呢?我們可能常常需要這樣的隨機序列,是吧。利用srand((unsign)(time(NULL))是一種方法,因為每一次運行程序的時間是不同的,對了,你知道time() 函數的功能是返回從1970/01/01到現在的秒數的吧,可能這個起始時間不正確,你查一下對不對吧,C還提供了另一個更方便的函數, randomize()
原形是void randomize(),功能是用來始初rand() 的種子的初始值,而且該值是不確定的,它相當於srand((unsign)(time(NULL)) 不過應注意的是randomize()的功能要通過time來實現所以在調用它時頭文件要包含time.h罷了。
c語言怎麼生成隨機數?
你好!
完整的代碼,紅圈處就是從上面100個數字中抽取到的數字:
#include stdio.h
#includestdlib.h //生成隨機數用
#includetime.h //利用時間生成種子
#includemath.h
int main()
{
int i;
int a[100];
srand( time(NULL) ); //生成種子
for(i=0;i100;i++)
{
a[i]=rand()%1000+1000; //生成一個小於1000的隨機數
//然後加1000,變成 1000 – 2000之間的數
printf(“%d “,a[i]); //列印
}
i=rand()%100; //隨機抽取其中的一個數
printf(“\n抽取到的是:%d\n”,a[i]);//列印
return 0;
}
C語言如何生成1~20000000隨機數
#includestdio.h
#includestdlib.h
#includetime.h
void main() { int x;
srand((unsigned int )time(NULL));
x=rand()%20000000+1;
printf(“%d\n”,x);
}
rand()%20000000會生成[0~19999999]區間的整數
rand()%20000000+1為[1~20000000]區間整數
c語言如何生成0到2,000,000,000之間的隨機數
#include time.h // 頭文件包括它
long int x;
srand((unsigned)time(NULL)); // 用當前時間取得種子
x = rand() % 2000000000; // 這就是0到1999999999之間的隨機數。
———
如果要取更大的隨機數,超出 long int 最大值,你可以把 數分成左右2部分,例如:
int x1,x2;
int v1=50000, v2=100000;
char str[20];
x1 = rand() % v1;
x2 = rand() % v2;
sprintf(str,”i=%d %d%d”,i, x1,x2); // 把他們拼起來,存到字元串里。
—-
MS VC++ 6.0 有 64 位 整型 _int64 x;
x = x1*v2+x2; // 把他們拼起來,存到長長整型里
printf(“%12I64d\n”, x); // 按12位場寬輸出
c語言中如何隨機生成一個 1 到 2千萬 的數
1 C語言產生隨機數函數。rand(); 頭文件為stdlib.h
2 產生[m,n]範圍內隨機數的語句: rand()%(n-m+1)+m
3 要產生不同隨機數範圍的方法:
將已獲取的隨機數保存下來,在產生新的隨機數後,與已獲取到的進行比較,如果存在則拋棄,否則保存。
於是,獲取到最小為m,最大為n,總數為k個的不同隨機數的函數可以寫作:
void get_rand(int *a, int m, int n, int k)//結果存在a中
{
int i,j,t;
for(i = 0; i k; )
{
t = rand()%(n-m+1)+m;
for(j = 0; j i; j ++)
if(a[j] == t) break;
if(j == i)//不重複
a[i++] = t;//記錄隨機數。
}
}
你應該會看字,會模仿吧,把m,n改成你需要的具體數字就可以了
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/270766.html