c 中怎麼用rand函式產生每次都不同的隨機數

2023-02-25 15:00:02 字數 4153 閱讀 7005

1樓:一顆程式猿

使用時間函式獲取當前的時間ticks, 然後把它傳遞給rand的建構函式, 這樣每次的序列就不同了。

2樓:哎呀

//-用時間作為隨機種子,除非時間(time(null))是一樣的,否則得到的隨機數就不一樣。

int randme(int intls)

3樓:網友

先取乙個隨機種子。

srand() 一般是填 time(0); srand((unsigned int)time(0));

rand();就可以了。 配合 % 和 + 可以讓隨機數符合自己想要的範圍。

如果要取乙個 0 - 99的數;就用 rand() 10050 - 99的數, 就用 rand() 50 + 50

c++中rand()%100在每次執行時所給的隨機數都是41,如何每次執行得到不同的隨機數?

4樓:匿名使用者

在呼叫rand前 呼叫一下srand(time(0));

c++中rand()每次產生的隨機數是不是應該不相同嗎?但是我的怎麼都一樣啊 ???是編譯器改進的原因嗎?

5樓:

#include

main裡面加du上。

for(int i=0:i<4;i++)

{srand((unsinged)time(null) )

cout《隨機。

zhi數dao要種子的,專是偽隨機,並不是真屬是隨機。

6樓:匿名使用者

看著是不一樣,不過如果你反覆啟動這個程式呢,就一樣了,加上種子就不一樣了,哦,樓上的型別寫錯了,應該是unsigned

c++中隨機函式怎麼用 rand()%9+1是什麼意思

7樓:匿名使用者

rand()隨機產生乙個浮點copy數,沒bai有區間,這與vb的rnd不同。

rand()%9+1,是先把durand()產生zhi的浮點數自動取整,再對dao9取餘,最後+1.

最終結果是隨機產生乙個1到9之間的整數,即有可能是1,2,3,4,5,6,7,8,9

8樓:小宛姓糖

rand()%9表示隨機產生的最大值為(9-1)就是8

9樓:鎮胤邛姮

rand是取隨機數的函式。你給出的語句意思就是說:a[i][j]這個數等於rand()這個函式產生的乙個隨機數,除以1000後再加1……

c++ 產生不同隨機數

10樓:匿名使用者

一。 不指定範圍產生隨機數。

用到函式rand(),函式原型為int rand(),無引數。此時會產生乙個介於0~rand_max間的整數。rand_max的大小可以檢視,在include資料夾(linux在usr目錄、windows在安裝目錄)的stdlib.

h可以看到,linux下其值為2147483647(),其值與具體系統有關。

範例:二。 指定範圍產生隨機數,產生0到某個數的隨機數沒有現成的函式,但是可以通過取餘得到。

範例:注意:以上兩個程式每次執行產生的結果是相同的,既是個偽隨機數。

rand()產生隨機數與具體的種子有關,當不特意用srand()獲取種子時,種子的預設值為1,因此需要用srand()函式產生不同的種子,srand函式原型:void srand(unsigned seed);為了產生不同的種子值,通常用時間作為引數值。

三。 指定範圍產生隨機數。

要求:指定範圍(m,n),m、n關係不定,隨機數包括m和n想方設法,把範圍(m,n)改變到(0,x),到最後再轉移回去。三種情況範例:

11樓:匿名使用者

你可以把srand((unsigned)time(null));這個種子設定函式放到迴圈外面啊!

c++中怎麼在一次呼叫裡產生多個不同的隨機數?

12樓:匿名使用者

你的的程式修改下。

#include

#include

#include

int ran();

void main()

int ran()

這樣的話就能有不同的值了,注意隨機數發生器初始化的位置,是程式執行的時候。

13樓:匿名使用者

先對隨機數發生器初始化一下,這個程式能在200之內取數比較平均#include

#include

#include

void main()

14樓:

函式返回值一般只能返回乙個值,如果要返回多個值,有兩種方法,均是以陣列方式實現:一、函式定義為指標函式,即:返回值為乙個指標,指向乙個陣列。

二、通過函式引數返回資料。即:陣列定義在呼叫者**中,自定義函式中只是完成陣列的賦值。

c++中產生不重複的隨機數

15樓:韻城之都的管家

因為windows下rand函式取值只有32767個,你可以試試rand()*rand(),這樣可以生成32767*32767範圍的數!

16樓:匿名使用者

演算法就是,每生成乙個數就與原來生成的數比較,如果有相等的就就重新生成乙個數,這樣就能保證10個數都不相等了。下面這個程式生成數的範圍是0到100:

#include

#include

#include

#define max 100

using namespace std;

int main()

}if(!ret)

if(i==10)

}while(--i)}

17樓:匿名使用者

rand_max是32767, 於是rand()/rand_max得到是1/32767~32767/32767, 乘上n依然只有32767個數。

可以通過(rand() 16) |rand(),即高16位和低16位分別產生隨機數的方法得到更大的隨機數。

另外先儲存再取是個空間時間都特低效的辦法, 更好的演算法可以自己搜一下"c++產生不重複隨機數"

18樓:匿名使用者

用rand()函式,你先網上看看rand()是怎麼用的,注意它是偽隨機,初始化種子要設好,網上查下資料多想下就知道了。接著是,你要不同的10個數。你可以設個陣列儲存已經產生的數。

比如已經產生了第乙個數5,你用rand()生成了又乙個5時,比較一下以產生的數發現是5,就跳過,看下乙個。總能產生10個不同的隨機數。 缺點是rand()不夠好,而且演算法不夠優化,但是能滿足你的要求,就10個數,不影響效率。

如果你要上萬個不一樣的就要好好優化演算法了。

19樓:匿名使用者

#include

#include

#include

#define max 100

using namespace std;

int main()

}if(!ret)

if(i==10)

}while(--i)

} 不應該用int定義main函式 沒有整形的返回值,並且j沒有初始化。

c++生成隨機數,要求在1-10之間,並且每次生成的值都不一樣,該如何解決,請詳細!

20樓:匿名使用者

樓上中間部分改一下應該就ok了。

比較懶,直接借用樓上的了,別介意哈(純手打,寫錯了自行調整一下int j; /用來檢查重複。

static int a[0]=;

cout<<"這是乙個隨機生成10個數字的程式,生成的數在1到10之間。for(i = 0; i < 10; )下標遞增放後面處理++i; /準備下乙個數下標}

21樓:匿名使用者

生成時比較下,重複的刪掉就好了唄。

c++中怎麼設定隨機變數,就是在幾個數中隨機產生乙個數。每次執行時都是隨機的不同的。 20

22樓:網友

關鍵點:使用隨機種子函式srand(time(0))

c 中random函式的功能有哪些 怎麼用啊

首先初始化隨機種子,一般使用當前時間,再在需要使用隨機數的時候呼叫rand 函式。include include include int main 新標準c 不建議使用rand 函式產生隨機數。你可以去看看default random engine這個類。時間的隨機生成數 eg,int x rand...

C 中函式過載有什麼用,C語言和C 語言的區別是什麼?

類的建構函式跟類名相同,即建構函式都同名。如果沒有函式過載機制,要想例項化不同的物件非常麻煩。操作符過載,本質上就是函式過載,它大大豐富了已有操作符的含義,方便使用,例如 可用於連線字串等。過載函式是函式的一種特殊情況,為方便使用,c 允許在同一範圍中宣告幾個功能類似的同名函式,但是這些同名函式的形...

什麼是c析構函式,在C 中什麼叫析構函式,怎麼用啊?舉個列啊,謝謝!!!

析構函式和建構函式正好相反.建構函式是和類同名.沒有返回值.析構函式是在類名前加 也沒有返回值.建構函式上在物件建立時執行.析構函式是在程式結束時執行.一般時候析構函式裡面寫的都是一些資源 之類的東西.不過c 的析構函式的呼叫機制和c 不同.並不能保證每次都會呼叫.所以最好不要利用c 的析構函式來 ...