㈠ c語言中產生隨機數
隨機數主要有兩個函數
一個種子產生函數
void
srand(int);
一個隨機數產生函數
int
rand();
當我們要產生隨機數的時候,首先我們生成一個隨機數種子(注意相同的種子產生的隨機數序列是一樣的)
然後使用rand()函數得到隨機數
祝你好運
㈡ c語言隨機數函數是什麼
C語言隨機函數主要用於實現一組隨機數的生成。
代碼示例如下:
#include<stdio.h>
#include<stdlib.h>
int main ()
{
int a;
a=rand()%4;
printf("%d ",a);
return 0;
}
C預先生成一組隨機數,每次調用隨機函數時從指針所指向的位置開始取值,因此使用rand()重復運行程序產生的隨機數都是相同的,可以通過srand()函數來改變指針位置。
(2)c語言中的隨機數函數擴展閱讀:
C語言隨機函數指針位置
void srand( unsigned int seed )
改變隨機數表的指針位置(用seed變數控制)。一般配合time(NULL)使用,因為時間每時每刻都在改變,產生的seed值都不同。
基於毫秒級隨機數產生方法:
#include<windows.h>
種子設為:srand(unsigned int seed);
srand(GetTickCount());
參考資料:網路-C語言隨機函數
㈢ C語言中有沒有產生隨機數的函數
貼個以前寫下來的例子給你.
#include <stdio.h>
#include <time.h> //include時間頭文件,有這個才可以調用下面的time(NULL)函數
void main()
{
int x,y;
srand( (unsigned)time( NULL ) );//用即時的系統時間來做隨機數種子.生成隨機數
//關於隨機數的說明,有點復雜
//建議看一下面這個網路頁面:
//
// randomize();//上面這句與這一句作用一樣,隨便選一句都行.
x=rand()%20; //隨機生成x,格式rand()%20即要求產生20以內的
//如果不加後面的%20,直接x=rand(),則隨機生成int取值范圍內的正整數.
y=rand()%30; //隨機生成y,30以內的正整數
printf("%d,%d",x,y);
}
㈣ C語言中怎樣生成隨機數
C語言生成
隨機數
的
函數
為rand。
1
聲明:
int
rand(void);
2
頭文件:
stdlib.h
3
功能:
獲取一個非負隨機
數值
。
4
注意事項:
a)
rand是
偽隨機數
,由一個種子計算得來。
如果種子相同,每次啟動
程序
,獲取到的
隨機序列
是固定的。
可以通過srand設置當前時間作為種子,使隨機效果更好。
srand(time(NULL));
b)
要獲取[m,n]范圍的隨機數,可以使用代碼
rand()%(n-m+1)+m
㈤ c語言怎麼調用隨機數生成函數
如何運用time函數和srand函數生成隨機數
#include
<stdio.h>
#include
<stdlib.h>//srand()、rand()
#include
<time.h>//time();
#define
N
50
int
main()
{
int
n;
srand((unsigned)time(NULL));//設置隨機數種子
while
(1)
{
n
=
(rand()
%
10)
+
1
;//產生1~10的隨機數
//rand()產生的是一個很大的數,對其求余就可以達到限定范圍的目的
printf("%d
",
n);
}
return
0;
}
㈥ C語言中產生隨機數的函數是什麼
rand函數也是調用dos的時鍾,進行的偽隨機函數.
你也可以使用時鍾來模擬隨機函數.
可以試用gettime這個函數:
long int MyRand(int x)
{
struct time t1,t2,t3;
gettime(&t1);
int y1=t1.ti_hund;//取1/100s作為基數
gettime(&t2);
int y2=t2.ti_hund;//取1/100s作為基數
gettime(&t3);
int y3=t3.ti_hund;//取1/100s作為基數
return y1*y2*y3;//產生的隨機數0~99*99*99
}
㈦ c語言中隨機數怎樣寫
C語言
函數
名rand()
簡介
功
能::偽
隨機數
發生器
所屬庫:stdlib.h
用
法:
需要先調用srand
初始化
,一般用當前
日歷時間
初始化隨機數種子,這樣每次執行
代碼
都可以產生不同的隨機數。
函數原型:int
rand(void);
相關函數:srand、time、GetTickCount
程序例
1:
#include
"stdio.h"
#include
"stdlib.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);
return
0;
}
例1程序在每次
運行時
都會生成相同的十個
偽隨機數
,如要每次生成的隨機數不同應結合srand函數和
time函數
。
///////////////////
int
i,a;
for(i=0;i<3;i++)
{
a=rand()%9;
printf("%d",a);
}
㈧ c語言產生隨機數的函數
在c語言中要產生隨機數可以用rand函數。
默認情況下這個函數產生的隨機整數的范圍是[0,RAND_MAX]。
RAND_MAX是一個預定義的宏,其值等於平台上int類型的最大值。
可以使用如下公式來產生一個[min,max]之間的隨機整數:
rand()%(max-min+1)+min
下面這個例子可以產生10個[1,100]的隨機數,並輸出了它們:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int i;
//初始化隨機數種子
srand(time(NULL));
//printf("%d ",RAND_MAX);
for(i=0;i<10;i++)
printf("%d ",rand()%100+1);
return 0;
}
下面是運行結果的截圖:
㈨ C語言中獲得隨機數的方法
問題1: 怎樣獲得一個真正的隨機數?要知道,rand()是不能產生真正的隨機數的!即使不能產生真正的隨機數,也要大概接近呀!而rand()好象每次的隨機都一樣。
專家解答:
之所以rand()每次的隨機數都一樣是因為rand()函數使用不正確。各種編程語言返回的隨機數(確切地說是偽隨機數)實際上都是根據遞推公式計算的一組數值,當序列足夠長,這組數值近似滿足均勻分布。如果計算偽隨機序列的初始數值(稱為種子)相同,則計算出來的偽隨機序列就是完全相同的。這個特性被有的軟體利用於加密和解密。加密時,可以用某個種子數生成一個偽隨機序列並對數據進行處理;解密時,再利用種子數生成一個偽隨機序列並對加密數據進行還原。這樣,對於不知道種子數的人要想解密就需要多費些事了。當然,這種完全相同的序列對於你來說是非常糟糕的。要解決這個問題,需要在每次產生隨機序列前,先指定不同的種子,這樣計算出來的隨機序列就不會完全相同了。你可以在調用rand()函數之前調用srand( (unsigned)time( NULL ) ),這樣以time函數值(即當前時間)作為種子數,因為兩次調用rand函數的時間通常是不同的,這樣就可以保證隨機性了。你也可以使用srand函數來人為指定種子數。Windows 9x/NT的游戲FreeCell就允許用戶指定種子數,這樣用戶如果一次游戲沒有成功,下次還可以以同樣的發牌結果再玩一次。
問題2: 我按照上述方法並不能產生隨機數,僅產生公差為3或4的等差數列:
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
#include <time.h>
void main()
{
for(int i=0;i<100000;i++)
{
srand( (unsigned)time( NULL ) );
cout<<rand()<<endl;
}
}
專家解答:
你的程序是有問題的,你每產生一個隨機數之前,都調用一次srand,而由於計算機運行很快,所以你每次用time得到的時間都是一樣的(time的時間精度較低,只有55ms)。這樣相當於使用同一個種子產生隨機序列,所以產生的隨機數總是相同的。你應該把srand放在循環外:
srand( (unsigned)time( NULL ) );
for(int i=0;i<100000;i++)
{
//相關語句
}
㈩ c語言中的各種取隨機數的函數怎麼用
rand是得到一個隨機數srand是設置一個用來生產隨機數的種子一般,在程序開始的時候用srand這是一個種子,這個種子通常是取當前時間,然後就可以連續的調用rand來得到隨機數了,比如#include <stdlib.h>
#include <stdio.h>
#include <winbase.h>void main( void )
{
int i;
srand( GetTickCount() );
for( i = 0; i < 10;i++ )
printf( "%6d\n", rand() );
}
c語言標准庫沒有random函數