1樓:匿名使用者
如果生成固定數量的兔子和狼,那麼你的思路反了,用兔子做例子,你應該用兔子的數量來迴圈,然後隨機生成位置,如果位置上已經有兔子或者狼了就重新隨機位置。
如果你想要一定的概率而不是一定的數量,那你的結構沒有大問題,但得在隨機的時候考慮他們之間的比例。比如你的比例是4:2:
1,那麼就rand()%7,得到0-3就生成草,得到4-5就生成兔子,得到6就生成狼。
2樓:匿名使用者
jackwind1987同學提議不錯,思路正確
如果你想要一定的概率而不是一定的數量,那麼用位置做迴圈,確定每個位置填什麼
rand()返回0至rand_max的整數
應判斷rand()<0.05*rand_max,生成狼
0.05*rand_max<=rand()<0.15*rand_max,生成兔子
0.15*rand_max<=rand()<0.35*rand_max,生成草
其餘大於等於0.35*rand_max,就是空地
或者按比例65:20:10:5=13:4:2:1 應該用rand()%20,再按比例分配
如果生成固定數量的兔子,狼和草,是可以用jackwind1987同學的思路的,
生成隨機的位置,往裡面填
但是當大部分位置被填之後,經常會填到重複的位置,程式效率很低
幸好你還有65%的空地,等其他填滿了就不用管了,思路還是可行的
我給個思路
先用rand()生成400個隨機數放在陣列r[400]中,然後對其進行索引排序
正序倒序都可以,生成索引陣列s[400]其中存放排序的索引
就是s中的400個數就是0-399這400個,但是順序是亂的
那樣就實現了將0~399這400個連續的整數打亂了位置
之後就網20x20的陣列填數字了,設i,j兩層從0-19的迴圈
如果s[20*i+j]<20那麼 a[i][j]=狼
如果20<=s[20*i+j]<60那麼 a[i][j]=兔子
如果60<=s[20*i+j]<140那麼 a[i][j]=草
剩下 a[i][j]=空地
c++問題 rand() 預設產生的隨機數範圍
3樓:匿名使用者
隨機數bai產生的範圍是:0-0x7fff(也就du是0到32767)
#include
#include
#include
#include
using namespace std;
void main()
{ srand( (unsigned)time( null ) ); //時間參zhi數作為種子
for(int i=0;i<32767;i++){ cout<
時間引數種dao子唯一,版然後取的數目不大於權32767個,基本能夠保證產生的隨機數唯一
4樓:匿名使用者
rand()函式可以用來產生隨機數;
rand()會返回一隨機數值,範圍在0至版rand_max 間。返回0至rand_max之間的權隨機數值,rand_max定義在stdlib.h,(其值至少為32767),運算的結果是一個不定的數,要看你定義的變數型別,int整形的話就是32767。
在呼叫此函式產生隨機數前,必須先利用srand()設好隨機數種子,如果未設隨機數種子,rand()在呼叫時會自動設隨機數種子為1。一般用for語句來設定種子的個數。
5樓:二十年
0到rand_max,rand_max的值視編譯bai器而定du一般不小於32767,你可以zhi測試dao一下。可以用當前時間做專隨機數的種子保證產生的值不屬同。在程式開始之前呼叫srand((unsigned)time(null));就行了。
c++中如何控制隨機數產生概率
6樓:匿名使用者
1、在標準的c庫中函式 rand() 可以生成 0 ~ rand_max 之間的一個隨機數,其中 rand_max 是stdlib.h 中定義的一個整數,它與系統有關。
試著用下面的程式看一下編譯器的 rand_max 的值是多少?
#include
#include
int main()
//一般編譯器上輸出 rand_max = 32767)2、可以使用%取餘操作來控制隨機數的概率,比如要1/1000,使用rand()%1000即可,每次生成的數在0~999,每個數出現的概率都是1/1000。以此類推,要1/10的概率,用rand()%10即可。
7樓:匿名使用者
思路是隨機生成個n(如100)以內的數, t= random()%n;
if (t < n *p1)
else if ( t < n*(p1+p2))else if (t c++ 產生不同隨機數 8樓:匿名使用者 一. 不指定範圍產生隨機數 用到函式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),到最後再轉移回去。三種情況範例: 9樓:匿名使用者 你可以把srand((unsigned)time(null));這個種子設定函式放到迴圈外面啊! 10樓:匿名使用者 srand((unsigned)time( null )*j ); c++生成隨機數,要求在1-10之間,並且每次生成的值都不一樣,該如何解決,請詳細! 11樓:匿名使用者 樓上中間部分改一下應該就ok了 比較懶,直接借用樓上的了,別介意哈(純手打,寫錯了自行調整一下int j; // 用來檢查重複 static int a[0]=; cout<<"這是一個隨機生成10個數字的程式,生成的數在1到10之間...."< for(i = 0; i < 10; ) // 下標遞增放後面處理++i; // 準備下一個數下標} 12樓:檀衛傑 程式如下,望採納! #include # include "stdlib.h" # include"time.h" using namespace std; int main() cout< cout<<"輸出產生的20個數字"< int j=0; for(;j<20;j++) cout<
return 0;} 13樓:匿名使用者 生成時比較下,重複的刪掉就好了唄。 在c++中如何產生1~9(包括1,9)和5~10(包括5,10)之間的隨機數?? 14樓:匿名使用者 #include "iostream.h" #include "stdlib.h" #include "stdio.h" void main() 15樓:匿名使用者 1~9; n=rand()%9+1; 5~10; n=rand()%6+5; 怎麼控制 c++生成隨機數的範圍 16樓:風若遠去何人留 c++的隨機數函式為rand(), 可以獲得一個非負整數的隨機數。 要讓隨機數限定在一個範圍,可以採用模除加加法的方式。 要產生隨機數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 17樓:匿名使用者 a=ranf()%33+1 注意:你說「a=rand()%33 這樣可以控制隨機數是在0-33範圍內」是錯的,是0-32讓a和b產生的隨機數不重複可以加條件判斷 18樓: a = rand()%33 a的範圍是0~32 b = a+1; b的範圍是1~33 用if語句判斷 如:if(a == b) continue; 19樓:匿名使用者 a=rand()%33+1; dowhile(b==a); 20樓:匿名使用者 這是之前經常去的 k a ɲ 3 p ● c ɲ還算可以 不少都是蠻漂亮的女主角;; ;;;; ;長大後驀然回首,你才會知道 相愛就不會永遠不曾有傷痕,幸福就是很簡單的生活好像只能如此了,不敢去奢求,如木棉一般 歌聲繞耳。只是為何入耳卻如此的讓人心殤 你是首長我是兵,你說衝鋒我不敢猶豫 那曾經以為的花好月圓,愛情只是宿命擺下的一個局。 要看r的 了吧。如果r的 是某個和時間有關的數 就可以解釋了 後三句就是 讓某個在65536和0之間的數除以65536獲得0和1之間的隨機數 r 2053.0 r 13849.0 這是兩個有個是素數吧 應該是的 2053就是 質因數分解13849 11 1259 那麼這兩個素數的公倍數大於65535... 編譯環境為 vs2013 產生1到3的整型隨機數的 如下 include include include define max 3 這個函式的意義為 隨機生成最大的數為3 define min 1 這個函式的意義為 隨機生成最小的數為1 int main 在c語言中,rand 函式可以用來產生隨機數... 先糾正一下錯誤,是srand unsigned int time 0 srand的形參是unsigned int型別的 這句話只要寫一次,一般情況下只能寫一次 隨機數是隨機的數,但計算機不可能產生隨機數,計算機根據你的輸入,再跟一個演算法就產生一個特定的序列.只要你給計算機一個相同的數,計算機返回的...c 產生隨機數的程式,C 產生隨機數的程式
c語言怎樣產生一定範圍的隨機數C語言怎樣產生一定範圍的隨機數?
c 中生成隨機數時的種子問題,關於C 的隨機數的種子的設定問題