請問一下,C語言中,再使用srand(time(NULL))後,要避免重複的數字再跑出來要用甚麼指令??
latest #57
YR◎祈求順利
13 years ago
照理說~用了srand之後應該就是會讓每次的數據都不太一樣了呀
可是我怎麼每一個都一樣!!
card1 = Deal();
立即下載
int fair_deal() { return srand(time(NULL))%13+1; }
YR◎祈求順利
13 years ago
阿~你要把srand那個自己抓出來
YR◎祈求順利
13 years ago
用rand()
YR◎祈求順利
13 years ago
其實快忘了XDD快來看講義
YR◎祈求順利
13 years ago
你把srand(time(NULL))抓出來當獨立的一行
他是獨立的
YR◎祈求順利
13 years ago
然後把你原本打srand(time(NULL))換成rand()
只是打在plurk就黏在一起了
那樣每次亂數出來結果會變依樣ㄟ=.=..
可以另外設一個used[53]
YR◎祈求順利
13 years ago
會嗎~照理說加了srand應該會照著時間換押
然後亂數出來的數字如果是X
while(used[x]>=4)x=rand()%13+1;
john35452: 這是甚麼指令呀??
這就只是多設一個陣列去紀錄而已
因為我那天在寫的時候出了一點小狀況= =...,發現沒那麼好寫= =
恩恩
不過我們老師說srand會真正亂數耶
結果竟然有問題
codepad.org/d3A8wpKU 我發牌的function還沒寫,還有那個A可以等於11還沒寫,然後裡面有寫到我所說的避免重複的方法
YR◎祈求順利
13 years ago
可是我用都可以呀= =
YR◎祈求順利
13 years ago
煥宗葛格超愛用的XD
k54bp6: 可以傳給看一下嗎??
YR◎祈求順利
13 years ago
大概像這樣
YR◎祈求順利
13 years ago
阿~不要裡那個scanf
謝謝!!
建 欣
13 years ago
srand 只是用來設定種子,並不會回傳亂數,你可以在程式的一開始執行一次 srand 即可,之後需要用亂數的時候呼叫 rand 產生亂數
YR◎祈求順利
13 years ago
Jsinglin: 耶~~~其實我本來想說要呼叫建欣的XDD
#include <stdlib.h> 這個是甚麼意思呀??為什麼我放下去後就不能跑了><
建 欣
13 years ago
k54bp6: 看起來又仁回答得很好呀,交給你了 XD
YR◎祈求順利
13 years ago
Jsinglin: 新的問題我不懂了XDDDD
k54bp6: 謝謝你囉~我發現可以不一樣了^ ^
john35452: 謝謝你啦!!
YR◎祈求順利
13 years ago
SmilingDanny: 所以它可以跑了喔=口=
妳要注意妳那樣亂數可能會出現亂數出超過4'張一樣的牌
建 欣
13 years ago
你有沒有 #include <time.h>
第一輪出現的數字還是一樣
建 欣
13 years ago
所以現在是不能跑還是數字有問題?
因為我同時進行了很多次
carda = DEAL(); cardb = DEAL();
一樣
第一次叫這兩個數字會一樣
也就是說carda會等於cardb
建 欣
13 years ago
DEAL() 這個 function 裡改用 rand() 了嗎?
srand(time(NULL)); return rand()%13+1;
改成這樣
建 欣
13 years ago
不可以再呼叫 srand 了,srand 只能在 main 中呼叫一次,否則同一秒內的亂數都會一樣
所以我要在main中打一次srand()然後在function裡面打rand()嗎??
建 欣
13 years ago
耶~~OK了耶 (LOL)
謝謝建欣!!
建 欣
13 years ago
:-D
back to top