這里確保產(chǎn)生的數(shù)不再重復(fù),只要有重復(fù)的就在隨機(jī)新的數(shù)。
網(wǎng)站建設(shè)、基于H5頁面制作技術(shù)的Web開發(fā)、手機(jī)站開發(fā)、微信開發(fā)等互聯(lián)網(wǎng)應(yīng)用服務(wù)。創(chuàng)新互聯(lián)公司始終關(guān)注著互聯(lián)網(wǎng)行業(yè)的前沿動(dòng)態(tài),創(chuàng)新互聯(lián)堅(jiān)信:真誠的態(tài)度,勤奮的工作是我們贏得客戶信賴的基礎(chǔ);而不斷創(chuàng)新、力求完美,才是創(chuàng)新互聯(lián)共同邁向美好未來的保證。
//讓數(shù)不重復(fù),而且每個(gè)數(shù)都有不好弄,但是如果是生成選手比賽順序,我這種做法就可以了。你把選手的編號(hào)放在一個(gè)數(shù)組里面,然后從數(shù)組的第一個(gè)開始,把生成的隨即數(shù)當(dāng)成要交換的下標(biāo),隨即交換后就打亂順序了。
●第一個(gè)問題:產(chǎn)生隨機(jī)數(shù)。在C++中要產(chǎn)生隨機(jī)數(shù)必須用到兩個(gè)函數(shù):srand()和rand()函數(shù),使用這兩個(gè)函數(shù)必須包含頭文件 stdlib.h。
e[q]=rand() % 1+20;你這里的意思我不太明白 取模1?那一定是0啊 再+20 那就是說不管是什么數(shù)最后e[q]只能是。。
利用空間換時(shí)間的策略,用flag數(shù)組保證了數(shù)字不會(huì)重復(fù),避免每次產(chǎn)生的隨機(jī)數(shù)都要遍歷一遍數(shù)組以避免重復(fù)的問題。
第二次從0-8里選,選過的消失。。最后2個(gè)為9,以后永遠(yuǎn)都選不上第8和第九。無論9出沒出現(xiàn)過,以此類推。最終全部為九,其余消失。如果為10的話,其實(shí)也影響不了,因?yàn)樽詈髱讉€(gè)數(shù)永遠(yuǎn)都不會(huì)取到、采納了吧。。
這種是算法問題,有很多中辦法啊,比如你定義一個(gè)a[10]里面放10個(gè)數(shù),然后你設(shè)計(jì)一個(gè)函數(shù),函數(shù)里隨機(jī)生成一個(gè)0-9的隨機(jī)數(shù)i,然后a[0]和a[i]交換,然后在你20次循環(huán)的一次循環(huán)里,跑100次這個(gè)函數(shù),生成一組新數(shù)組。
srand(time(NULL));//設(shè)置隨機(jī)數(shù)種子。 while(n10) { int m = rand()%10; //獲取一個(gè)0~9的隨機(jī)數(shù)。 if(f[m]) continue;//該數(shù)之前已經(jīng)獲取到過。 a[n++] = m;//將該數(shù)存入數(shù)組。
間。在調(diào)用此函數(shù)產(chǎn)生隨機(jī)數(shù)前,必須先利用srand()設(shè)好隨機(jī)數(shù)種子,如果未設(shè)隨機(jī)數(shù)種子,rand()在調(diào)用時(shí)會(huì)自動(dòng)設(shè)隨機(jī)數(shù)種子為1。關(guān)于隨機(jī)數(shù)種子請(qǐng)參考srand()。srand((int)time(0));是產(chǎn)生的隨機(jī)數(shù)每次不一樣。
因?yàn)殡S機(jī)函數(shù)只需要一個(gè)種子就能產(chǎn)生一系列的隨機(jī)數(shù),并不是每個(gè)隨機(jī)數(shù)都需要一個(gè)種子。你把 srand(time(0)) 放到循環(huán)前面就可以了。
C語言/C++怎樣產(chǎn)生隨機(jī)數(shù):這里要用到的是rand()函數(shù), srand()函數(shù),C語言/C++里沒有自帶的random(int number)函數(shù)。