2012-12-03 34 views
1

我是新來編程,我試圖在C#中建立一個模具滾子游戲。模具輥與用戶選擇邊數

該程序詢問用戶的邊數,然後用隨機數擲骰子。

我有以下的僞代碼:

  1. 詢問用戶邊數。
  2. 用隨機數滾動模具,最大範圍是邊的數量。
  3. 告訴數量軋

我的問題,用戶是我怎麼搖船產生由用戶指定範圍內的隨機數骰子?

+1

[Random.Next(int,int)](http://msdn.microsoft.com/en-us/library/2dx6wyd4.aspx) –

+1

你基本上問的是如何獲得一個隨機數一定範圍內。看看「隨機」類。 –

回答

2

System.Random類通常用於生成隨機隨機數。

它有一個名爲Next的方法的重載,它會生成一個大於或等於0的隨機整數,並嚴格小於傳遞的整數參數。

因此,如果用戶選擇了一個n -sided模具,你必須的Randomr一個實例,

r.Next(n) + 1 

將生成1n包容之間的隨機整數。

創建一個Random的單個實例並重用它是一種很好的做法,因爲如果您將多個實例關在一起,它們都會生成相同的數字。

+1

如果你有一個6個骰子,擲出一個6,然後加上1 - 在Random.Next(n)+ 1'的情況下,你會有7個?' – LukeHennerley

+1

'r.Next(n)'將在'0 ''和'n-1'包含在內 - 所以'r.Next(6)'將在'0'和'5'之間生成 – Rawling

+0

我明白了!我會想通過在超載中指定'Max'值將會得到'n'作爲最高的一個,但是讀取它所聲明的重載方法 - '返回一個小於指定的最大值的非負的隨機數 – LukeHennerley

0

要獲得0與100不包含之間和100的隨機整數:

Random random = new Random(); 
int randomNumber = random.Next(0, 100); 
0
public int RollDice(int iNoSides) 
{ 
    var rand = new Random(); 
    return rand.Next(iNoSides) + 1 
} 

random number c#一個簡單的谷歌會的得到你或多或少這個確切的代碼。

編輯

你有鏈接從其他的答案和評論MSDN文檔,我知道你的新的編程,但最好的學習方法就是儘量努力,你可以得到的東西。如果你得到這樣一種狀態:你的心無法運行任何更多,發佈與堆棧你的問題的嘗試會使人通常很多快樂,他們是真正幫助別人也就是卡住

EDIT 2

按照@ Rawling的評論,我意識到該方法的超負荷狀態表示Next(n)返回Non-negative number less than the specified maximum

+1

如果用戶輸入'6',這將在'0'和'5'之間返回一個nubmer。另外,如果在緊密循環中調用它,它將重複地返回相同的數字。 – Rawling

+0

@Rawling感謝您指出了這一點! – LukeHennerley

+0

謝謝,我做了Google的一些關鍵詞,包括「隨機骰子C#」,但不是「隨機數字C#」。我猜想關鍵是從更簡單的搜索開始,到更復雜的問題。 –

1
Random random = new Random(); 
int randomNumber = random.Next(1, userInput); 

有一件事讓你知道,雖然是隨機的功能是不完全隨機的,它隨機的,但在相同的隨機順序每次..我要讓你看看你喜歡的搜索引擎播種;)

+1

如果用戶輸入'6',這將永遠不會返回'6'。 (它會在'1'和'5'之間返回 – Rawling

+0

我不想破壞他所有的測試.. – Sayse

+0

哈,很公平。對不起,我挫敗了你的計劃:D – Rawling