1樓:匿名使用者
float b=rand()/(rand_max+1.0);
printf("%f\n",b);
註釋:stdlib.h標頭檔案中有巨集#define rand_max 0x7fff
rand()產生一個0到0x7ffff即0到32767之間的隨機數rand()/(rand_max+1.0)就等於一個0到1之間的小數了,因為rand()最大是32767最小是0,再除以32768就是一個0到1之間的小數(不能等於1),再乘以10就是一個0到10之間的數了(不等於10).最後再加1,就成了一個求1到10之間隨機數的式子了.
2樓:匿名使用者
// 隨機數種子
time_t t;
srand((unsigned) time(&t));
// 用來返回<=lr的數, 把1也設成引數的話,就是樓主大人要的東西
rnd(long lr)
3樓:匿名使用者
rand() % (b - a) + a
4樓:加
x=a+rank()%(b-a)
5樓:bai渡不知道
int getrand(int a,int b)else}
c語言rand函式產生的最大隨機數是多少?
6樓:辟芷兮兮
最大32767 (2^16-1)。
系統裡的隨機數是利用初等數論中的同餘定理來實現的.
整數rand的原理是:
y=ax+b(mod n)其中,n一般是一個很大的素數,幾萬。
a也是大素數。而且a,b,n都是常數。所以rand的產生決定於x,他被稱為seed。
每一個seed都是上一次產生的y的函式。這樣,如果直接取seed=y的話,
雖然產生的rand之間相關性甚小,但只要知道某個y,就能推知以後的rand。
為避免這種情況,一般取seed為y和當時計算機的時間的函式,如seed=y+t
比如vc中對於rand()函式是如下實現的.
int __cdecl rand (void)
c語言如何把rand()產生的隨機數存入陣列
7樓:匿名使用者
rand()函式是產生隨bai機數的一個隨機函du數。zhi(1)使用dao
專該函式首先應在開屬頭包含標頭檔案stdlib.h#include(c++建議使用#include,下同)(2)在標準的c庫中函式rand()可以生成0~rand_max之間的一個隨機數,其中rand_max 是stdlib.h 中定義的一個整數,它與系統有關。
(3)rand()函式沒有輸入引數,直接通過表示式rand()來引用;例如可以用下面的語句來列印兩個隨機數:
printf("random numbers are: %i %i\n",rand(),rand());
例如:#include
#include
int main()
/*執行結果:
1 7 4 0 9 4 8 8 2 4*/
8樓:女孩子莫
rand()函式是產生隨
bai機du數的一個隨機函式zhi。
(1)使用該函式首先應在開頭dao包含標頭檔案stdlib.h#include(c++建議使內用#include,下容同)(2)在標準的c庫中函式rand()可以生成0~rand_max之間的一個隨機數,其中rand_max 是stdlib.h 中定義的一個整數,它與系統有關。
(3)rand()函式沒有輸入引數,直接通過表示式rand()來引用;例如可以用下面的語句來列印兩個隨機數:
printf("random numbers are: %i %i\n",rand(),rand());
例如:#include
#include
int main()
/*執行結果:
1 7 4 0 9 4 8 8 2 4*/
9樓:冷酷死神
#include
#include
int main()
/*執行結果:
1 7 4 0 9 4 8 8 2 4*/
c語言如何srand和rand函式產生10個1-100內的隨機數
10樓:幻翼高達
需要準備的材料分別有:電腦、c語言
編譯器。
1、首先,開啟c語言編譯器,新建一個初回始.cpp檔案,例如答:test.cpp。
2、在test.cpp檔案中,輸入c語言**:
for (int i = 0; i < 10; i++)printf("%d ", rand() % 100 +1);
3、編譯器執行test.cpp檔案,此時成功通過rand產生了10個1-100內的整數。
11樓:匿名使用者
先用抄srand函式設定一個
種子,一般為襲當前時間,然後使用bairand函式產生隨機du數zhi
,如產生a~b的隨機數使用表示式rand()%(b-a+1)+a。
注意dao:srand函式在標頭檔案#include 中。
示例**:
#include
#include
#include
int main()
//列印生成的隨機數
for (i = 0; i < 10; ++i)printf ("\n");
return 0;}
12樓:匿名使用者
這就是關於程式設計的一些內容,現在呢科技發達了沒有,今後這個如果不會變成的話,可能連工作都找不到。
13樓:匿名使用者
#include
#include
#include
#define n 10
#define m1 1
#define m2 100
void main()
if(i==n)break;
} printf("\n");}
14樓:
#include "stdio.h"//
#include "stdlib.h"//#include “time.h”//
void main(void)
15樓:匿名使用者
#include #include
#include
void t_rand() // forprintf("\n");
} // t_rand
void main()
c語言怎樣產生一定範圍的隨機數?
16樓:hk_孤獨的心
編譯環境為:vs2013
產生1到3的整型隨機數的**如下:
#include
#include
#include
#define max 3 //這個函式的意義為:隨機生成最大的數為3
#define min 1 //這個函式的意義為:隨機生成最小的數為1
int main()
17樓:愛夏的你呀
在c語言中,rand()函式可以用來產生隨機數,但是這不是真真意義上的隨機數,
是一個偽隨機數,是根據一個數,可以稱它為種子。
為基準以某個遞推公式推算出來的一系數,當這系列數很大的時候,就符合正態公佈,從而相當於產生了隨機數。
c語言產生一定範圍的隨機數的源**如下:
#include
#include
int main()
return 0;
}擴充套件資料
1、如果要隨機生成一個在一定範圍的數,你可以在巨集定義中定義一個random(int number)函式,然後在main()裡面直接呼叫random()函式。
2、在對rand()的前三次呼叫中,並且此後得到的返回值仍然是在對rand()的第一批呼叫中所得到的其餘的返回值。因此,只有再次給srand()提供一個隨機的“種子”值,才能再次得到一個隨機數。
18樓:匿名使用者
c語言的獲取隨
機數的函式為rand(), 可以獲得一個非負整數的隨機數。要呼叫rand需要引用標頭檔案stdlib.h。
要讓隨機數限定在一個範圍,可以採用模除加加法的方式。
要產生隨機數r, 其範圍為 m<=r<=n,可以使用如下公式:
rand()%(n-m+1)+m
其原理為,對於任意數,
0<=rand()%(n-m+1)<=n-m於是0+m<=rand()%(n-m+1)+m<=n-m+m即m<=rand()%(n-m+1)+m<=n
19樓:哇哎西西
利用srand((unsigned int)(time(null))是一種方法,因為每一次執行程式的時間是不同的。
在c語言裡所提供的隨機數發生器的用法:現在的c編譯器都提供了一個基於ansi標準的偽隨機數發生器函式,用來生成隨機數。它們就是rand()和srand()函式。
這二個函式的工作過程如下:
1) 首先給srand()提供一個種子,它是一個unsigned int型別,其取值範圍從0~65535;
2) 然後呼叫rand(),它會根據提供給srand()的種子值返回一個隨機數(在0到32767之間)
3) 根據需要多次呼叫rand(),從而不間斷地得到新的隨機數;
4) 無論什麼時候,都可以給srand()提供一個新的種子,從而進一步“隨機化”rand()的輸出結果。
下面是0~32767之間的隨機數程式:
#include
#include
#include // 使用當前時鐘做種子
void main(void)
根據上面的程式可以很容易得到0~1之間的隨機數:
#include
#include
#include
int main( )
而產生1~100之間的隨機數可以這樣寫:
#include
#include
#include
int main( )
20樓:溫柔_儂渲芷
srand((int)time(null));設定隨機數種子
rand()%100;產生0-99的隨機數。高階點的,假如要產生16-59之間的數,你可以這樣寫:rand()%44+16(這裡44由59-16+1得到)。其他情況如法炮製!
下面是搜回來的:
問題1: 怎樣獲得一個真正的隨機數?要知道,rand()是不能產生真正的隨機數的!即使不能產生真正的隨機數,也要大概接近呀!而rand()好象每次的隨機都一樣。
專家解答:
之所以rand()每次的隨機數都一樣是因為rand()函式使用不正確。各種程式語言返回的隨機數(確切地說是偽隨機數)實際上都是根據遞推公式計算的一組數值,當序列足夠長,這組數值近似滿足均勻分佈。如果計算偽隨機序列的初始數值(稱為種子)相同,則計算出來的偽隨機序列就是完全相同的。
這個特性被有的軟體利用於加密和解密。加密時,可以用某個種子數生成一個偽隨機序列並對資料進行處理;解密時,再利用種子數生成一個偽隨機序列並對加密資料進行還原。這樣,對於不知道種子數的人要想解密就需要多費些事了。
當然,這種完全相同的序列對於你來說是非常糟糕的。要解決這個問題,需要在每次產生隨機序列前,先指定不同的種子,這樣計算出來的隨機序列就不會完全相同了。你可以在呼叫rand()函式之前呼叫srand( (unsigned)time( null ) ),這樣以time函式值(即當前時間)作為種子數,因為兩次呼叫rand函式的時間通常是不同的,這樣就可以保證隨機性了。
你也可以使用srand函式來人為指定種子數。windows 9x/nt的遊戲freecell就允許使用者指定種子數,這樣使用者如果一次遊戲沒有成功,下次還可以以同樣的發牌結果再玩一次。
問題2: 我按照上述方法並不能產生隨機數,僅產生公差為3或4的等差數列:
請採納答案,支援我一下。
C語言問題,C語言問題
符合,相當於一個字元,ascii字元可以直接轉成short整型數字。101 不符合,這是一個字串,不能作為常數。不符合,因為 會對雙引號轉義,找不到另一個雙引號。會出錯。而且就算是 也不符合,因為編譯器會把它理解成一個字串,而非單個字元。e3不符合。019不符合,0開頭代表8進位制數,不能出現9。0...
C語言求解,C語言求解
我去,你也太大意了吧!1 定義的bml變數是小寫的 float w,h,bmi 在後面各處使用該變數的時候卻是大寫的 bmi fbmi w,h 2 scanf函式名你又打多了乙個字母t scantf f,f w,h 3 定義的函式fbmi,呼叫函式的時候同樣大小寫不匹配 bmi fbmi w,h 4...
C語言問題,c語言問題
這是值傳遞,值傳遞的過程的是,系統會給你的實參的值進行乙個拷貝,把這個拷貝傳遞給形式引數。因為是拷貝,所以實參裡頭的值是不會改變的。如果是位址傳遞就不一樣了。補充 你可以定義乙個指標,這個指標指向主函式的結構體。然後子函式的形參也定義乙個指向結構提的指標。這樣就是位址傳遞了。樓主還是好好花點時間看看...