1. rand()隨機函數產生的值的范圍

cplusplus中有這樣的介紹:

rand函數產生一個0到RAND_MAX的偽隨機數,這里的RAND_MAX因不同的實現而異,但RAND_MAX至少為32767。(比如,MSVC中通常為0x7fff,即32767,而Linux平台下GCC中RAND_MAX通常會遠遠大於這個值)

有一些其他編程語言的rand函數確實是產生一個[0.0, 1.0)之間的浮點數。比如MATLAB。

在C中,rand() % 32會產生一個[0, 32)之間的偽隨機數,那麼rand() % 32 + 1的取值區間實際上是[1, 33)。

要產生[0, 32)(開區間)之間偽隨機數:rand() % 32即可。

(1)c語言rand函數范圍擴展閱讀:

注意:如果要使用函數RAND()生成一隨機數,並且使之不隨單元格計算而改變,可以在編輯欄中輸入「=RAND()」,保持編輯狀態,然後按F9,將公式永久性地改為隨機數。

不過,這樣只能一個一個的永久性更改,如果數字比較多,也可以全部選擇之後,另外選擇一個合適的位置粘貼,粘貼的方法是點擊右鍵,選擇「選擇性粘貼」,然後選擇「數值」,即可將之前復制的隨機數公式產生的數值(而不是公式)復制下來。

2. C語言srand和rand函數

rand()函數,一般根srand()函數一起用。它們在一起,作用是:產生一個隨機數。

通常格式為:

srand ( (unsigned) time (NULL) );
a=rand()%x; //a,x,均為整型變數,其中,x在之前應被賦值。

srand函數裡面的unsigned也可以換成其它的。例如:int之類的數據類型,但結果也會有相應的變化。
通過rand函數產生隨機數以後,用%x來限定它的范圍。即:0<=a<x。
其原理是:用那個隨機數,去除以x,留下所得余數,作為最終結果。

3. c語言rand()函數

rand和srand的用法
首先我們要對rand&srand有個總體的看法:srand初始化隨機種子,rand產生隨機數,下面將詳細說明。

rand(產生隨機數)
表頭文件: #include<stdlib.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()*/
#include<stdlib.h>
main()
{
int i,j;
for(i=0;i<10;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(設置隨機數種子)
表頭文件:#include<stdlib.h>

定義函數:void srand (unsigned int seed);

函數說明:
srand()用來設置rand()產生隨機數時的隨機數種子。參數seed必須是個整數,通常可以利用geypid()或time(0)的返回值來當做seed。如果每次seed都設相同值,rand()所產生的隨機數值每次就會一樣。

範例
/* 產生介於1 到10 間的隨機數值,此範例與執行結果可與rand()參照*/
#include<time.h>
#include<stdlib.h>
main()
{
int i,j;
srand((int)time(0));
for(i=0;i<10;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; i<10; 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罷了

4. c語言如何產生在一定范圍內的隨機數

C語言/C++怎樣產生隨機數:這里要用到的是rand()函數, srand()函數,C語言/C++里沒有自帶的random(int number)函數。

(1) 如果你只要產生隨機數而不需要設定范圍的話,你只要用rand()就可以了:rand()會返回一隨機數值, 范圍在0至RAND_MAX 間。RAND_MAX定義在stdlib.h, 其值為2147483647。
例如:

#include<stdio.h>
#include<stdlib.h>
void main()
{
for(int i=0;i<10;i+)
printf("%d\n",rand());
}

(2) 如果你要隨機生成一個在一定范圍的數,你可以在宏定義中定義一個random(int number)函數,然後在main()裡面直接調用random()函數:

例如:隨機生成10個0~100的數:
#include<stdio.h>
#include<stdlib.h>
#define random(x) (rand()%x)

void main()
{
for(int x=0;x<10;x++)
printf("%d\n",random(100));
}

(3)但是上面兩個例子所生成的隨機數都只能是一次性的,如果你第二次運行的時候輸出結果仍和第一次一樣。這與srand()函數有關。srand()用來設置rand()產生隨機數時的隨機數種子。在調用rand()函數產生隨機數前,必須先利用srand()設好隨機數種子(seed), 如果未設隨機數種子, rand()在調用時會自動設隨機數種子為1。上面的兩個例子就是因為沒有設置隨機數種子,每次隨機數種子都自動設成相同值1 ,進而導致rand()所產生的隨機數值都一樣。

srand()函數定義 : void srand (unsigned int seed);
通常可以利用geypid()或time(0)的返回值來當做seed
如果你用time(0)的話,要加入頭文件#include<time.h>

例如:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define random(x) (rand()%x)

void main()
{

srand((int)time(0));
for(int x=0;x<10;x++)
printf("%d\n",random(100));
}

這樣兩次運行的結果就會不一樣了!!

5. c語言中rand()函數怎麼用

rand函數功能為獲取一個偽隨機數(偽隨機數的概念下面會有介紹)。

一、函數名:

rand();


二、聲明:

int rand();


三、所在頭文件:

stdlib.h


四、功能:

返回一個偽隨機數。之所以說是偽隨機數,是因為在沒有其它操作下,每次執行同一個程序,調用rand得到的隨機數序列是固定的(不是真正的「隨機」)。


五、為了使rand的結果更「真」一些,也就是令其返回值更具有隨機性(不確定性),C語言在stdlib.h中還提供了srand函數,通過該函數可以設置一個隨機數種子,一般用當前時間的毫秒數來做參數。通過time(NULL)可以獲取到當前時間的毫秒值(該函數位於time.h)中。


六、使用rand的流程可以總結為:

1 調用srand(time(NULL))設置隨機數種子。

2 調用rand函數獲取一個或一系列隨機數。

需要注意的是,srand只需要在所有rand調用前,被調用一次即可,沒必要調用多次。


七、以下是隨機獲取10個整型值並輸出的例子,輔助理解。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

intmain()
{
inti;

srand(time(NULL));//設置隨機數種子。

for(i=0;i<10;i++)//運行10次。
printf("%d ",rand());//每次獲取一個隨機數並輸出。

return0;
}

6. 關於C語言中rand函數的一個簡單問題—rand函數產生隨機數的范圍是

rand()產生偽隨機數,srand函數提供種子,種子不同產生的隨機數序列也不同,所以通常先調用srand函數 time(0)返回的是系統的時間(從1970.1.1午夜算起),單位:秒,返回0至RAND_MAX之間的隨機數值,RAND_MAX定義在stdlib.h,其值為2147483647。

7. C語言rand取值范圍是多少

0~RAND_MAX
其中RAND_MAX為stdlib.h中的宏,其值與編譯器實現有關,至少為32767

8. c語言rand函數

%90就是產生的隨機數對90取余,那麼結果肯定是在0到89之間, 結果再加上10,不就是10到99之間了

9. C語言:用rand函數 產生1到10范圍內的隨機數的問題,有點地方求教

這樣寫,count[10]={0};
intn;
while(1)
{
n=random();
if(n%10==0)
count[9]++;
else
count[n%10-1]++;//注意count的下標是n%10-1不是n%10+1
}

10. C語言怎樣產生一定范圍的隨機數

在C語言中復,rand()函數可以用來產生制隨機數,但是這不是真真意義上的隨機數,是一個偽隨機數,是根據一個數,可以稱它為種子。

為基準以某個遞推公式推算出來的一系數,當這系列數很大的時候,就符合正態公布,從而相當於產生了隨機數。

C語言產生一定范圍的隨機數的源代碼如下:

#include<stdio.h>

#include<stdlib.h>

int main()

{

int i;

for(i=0; i<10; i++) //隨機產生10個數。

{

printf("%d ", rand());

}

return 0;

}

(10)c語言rand函數范圍擴展閱讀

1、如果要隨機生成一個在一定范圍的數,你可以在宏定義中定義一個random(int number)函數,然後在main()裡面直接調用random()函數。

2、在對rand()的前三次調用中,並且此後得到的返回值仍然是在對rand()的第一批調用中所得到的其餘的返回值。因此,只有再次給srand()提供一個隨機的「種子」值,才能再次得到一個隨機數。