丹尼~認真過每一天!!
2011-03-30T17:05:04.000Z
請問一下,C語言中,再使用srand(time(NULL))後,要避免重複的數字再跑出來要用甚麼指令??
latest #57
YR◎祈求順利
2011-03-30T17:06:39.000Z
照理說~用了srand之後應該就是會讓每次的數據都不太一樣了呀
丹尼~認真過每一天!!
2011-03-30T17:07:32.000Z
可是我怎麼每一個都一樣!!
丹尼~認真過每一天!!
2011-03-30T17:08:02.000Z
card1 = Deal();
立即下載
丹尼~認真過每一天!!
2011-03-30T17:08:18.000Z
int fair_deal() { return srand(time(NULL))%13+1; }
YR◎祈求順利
2011-03-30T17:08:57.000Z
阿~你要把srand那個自己抓出來
YR◎祈求順利
2011-03-30T17:09:08.000Z
用rand()
YR◎祈求順利
2011-03-30T17:09:19.000Z
其實快忘了XDD快來看講義
YR◎祈求順利
2011-03-30T17:11:11.000Z
你把srand(time(NULL))抓出來當獨立的一行
丹尼~認真過每一天!!
2011-03-30T17:11:43.000Z
他是獨立的
YR◎祈求順利
2011-03-30T17:11:43.000Z
然後把你原本打srand(time(NULL))換成rand()
丹尼~認真過每一天!!
2011-03-30T17:11:59.000Z
只是打在plurk就黏在一起了
不知道在忙啥的阿杰
2011-03-30T17:12:09.000Z
那樣每次亂數出來結果會變依樣ㄟ=.=..
不知道在忙啥的阿杰
2011-03-30T17:12:30.000Z
可以另外設一個used[53]
YR◎祈求順利
2011-03-30T17:12:39.000Z
會嗎~照理說加了srand應該會照著時間換押
不知道在忙啥的阿杰
2011-03-30T17:12:40.000Z
然後亂數出來的數字如果是X
不知道在忙啥的阿杰
2011-03-30T17:13:13.000Z
while(used[x]>=4)x=rand()%13+1;
丹尼~認真過每一天!!
2011-03-30T17:14:22.000Z
john35452: 這是甚麼指令呀??
不知道在忙啥的阿杰
2011-03-30T17:15:32.000Z
這就只是多設一個陣列去紀錄而已
不知道在忙啥的阿杰
2011-03-30T17:16:35.000Z
因為我那天在寫的時候出了一點小狀況= =...,發現沒那麼好寫= =
丹尼~認真過每一天!!
2011-03-30T17:17:11.000Z
恩恩
丹尼~認真過每一天!!
2011-03-30T17:17:30.000Z
不過我們老師說srand會真正亂數耶
丹尼~認真過每一天!!
2011-03-30T17:17:47.000Z
結果竟然有問題
不知道在忙啥的阿杰
2011-03-30T17:22:03.000Z
codepad.org/d3A8wpKU 我發牌的function還沒寫,還有那個A可以等於11還沒寫,然後裡面有寫到我所說的避免重複的方法
YR◎祈求順利
2011-03-30T17:22:12.000Z
可是我用都可以呀= =
YR◎祈求順利
2011-03-30T17:22:33.000Z
煥宗葛格超愛用的XD
丹尼~認真過每一天!!
2011-03-30T17:22:59.000Z
k54bp6: 可以傳給看一下嗎??
YR◎祈求順利
2011-03-30T17:25:17.000Z
YR◎祈求順利
2011-03-30T17:25:31.000Z
大概像這樣
YR◎祈求順利
2011-03-30T17:26:19.000Z
阿~不要裡那個scanf
丹尼~認真過每一天!!
2011-03-30T17:28:07.000Z
謝謝!!
建 欣
2011-03-30T17:29:30.000Z
srand 只是用來設定種子,並不會回傳亂數,你可以在程式的一開始執行一次 srand 即可,之後需要用亂數的時候呼叫 rand 產生亂數
YR◎祈求順利
2011-03-30T17:30:15.000Z
Jsinglin: 耶~~~其實我本來想說要呼叫建欣的XDD
丹尼~認真過每一天!!
2011-03-30T17:30:24.000Z
#include <stdlib.h> 這個是甚麼意思呀??為什麼我放下去後就不能跑了><
建 欣
2011-03-30T17:31:00.000Z
k54bp6: 看起來又仁回答得很好呀,交給你了 XD
YR◎祈求順利
2011-03-30T17:33:28.000Z
Jsinglin: 新的問題我不懂了XDDDD
丹尼~認真過每一天!!
2011-03-30T17:37:19.000Z
k54bp6: 謝謝你囉~我發現可以不一樣了^ ^
丹尼~認真過每一天!!
2011-03-30T17:37:33.000Z
john35452: 謝謝你啦!!
YR◎祈求順利
2011-03-30T17:38:03.000Z
SmilingDanny: 所以它可以跑了喔=口=
不知道在忙啥的阿杰
2011-03-30T17:38:04.000Z
妳要注意妳那樣亂數可能會出現亂數出超過4'張一樣的牌
建 欣
2011-03-30T17:38:31.000Z
你有沒有 #include <time.h>
丹尼~認真過每一天!!
2011-03-30T17:39:36.000Z
Jsinglin: 有
丹尼~認真過每一天!!
2011-03-30T17:40:35.000Z
第一輪出現的數字還是一樣
建 欣
2011-03-30T17:41:59.000Z
所以現在是不能跑還是數字有問題?
丹尼~認真過每一天!!
2011-03-30T17:43:30.000Z
因為我同時進行了很多次
丹尼~認真過每一天!!
2011-03-30T17:43:56.000Z
carda = DEAL(); cardb = DEAL();
丹尼~認真過每一天!!
2011-03-30T17:44:31.000Z
一樣
丹尼~認真過每一天!!
2011-03-30T17:44:43.000Z
第一次叫這兩個數字會一樣
丹尼~認真過每一天!!
2011-03-30T17:45:23.000Z
也就是說carda會等於cardb
建 欣
2011-03-30T17:46:19.000Z
DEAL() 這個 function 裡改用 rand() 了嗎?
丹尼~認真過每一天!!
2011-03-30T17:47:28.000Z
srand(time(NULL)); return rand()%13+1;
丹尼~認真過每一天!!
2011-03-30T17:47:37.000Z
改成這樣
建 欣
2011-03-30T17:49:36.000Z
不可以再呼叫 srand 了,srand 只能在 main 中呼叫一次,否則同一秒內的亂數都會一樣
丹尼~認真過每一天!!
2011-03-30T17:52:15.000Z
所以我要在main中打一次srand()然後在function裡面打rand()嗎??
建 欣
2011-03-30T17:53:57.000Z
丹尼~認真過每一天!!
2011-03-30T17:54:49.000Z
耶~~OK了耶 (LOL)
丹尼~認真過每一天!!
2011-03-30T17:54:58.000Z
謝謝建欣!!
建 欣
2011-03-30T17:55:29.000Z
:-D
back to top