→ tkcn:為什麼不直接把3個數字先隨機放進去,意義一樣呀 03/07 23:34
有三個數值 100 200 300,三個位置[A] [B] [C]
玩家隨機從A,B,C選擇一個位置,隨機開出1組數字,剩下的兩組隨機出現在剩下兩個位置
舉例:
玩家選擇位置C,開出數值為200,剩餘數值A為300,B為100
我的寫法是這樣
int iPickedVal[] = {0,0,0}; //索引1表A的值,2表B的值,3表C的值
int iMoney = (rand() % 3 + 1)*100;//隨機產生挑選位置的值
int iPicked = rand() % 3; //隨機挑選一個位置,0=A,1=B,2=C
int iWhich = (iPicked/100) - 1; //在iPrize的索引
int iPrize[] = {100,200,300};
for (int i=0; i<3; )
{
if (i == iPicked)
{
iPickedVal[i] = iMoney;
iPrize[iWhich] = 0;
++i;
}
else
{
bool bFind = false;
while (!bFind)
{
int rIdx = rand() % 3;
//選的值還沒被選 且 不等於產生的值才要
if (iPrize[rIdx] != 0 && iPrize[rIdx] != iMoney)
{
iPickedVal[i] = iPrize[rIdx];
iPrize[rIdx] = 0;
++i;
bFind = true;
}
}
}
}
我的問題是,這個做法如果運氣差,在while那邊有可能會做很多次,雖然依現在的電腦
速度來說這完全不是問題啦,不過想請問一下,有沒有更漂亮聰明的寫法呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.163.89.216