我敢肯定這個問題有很多問題,但我無法找到任何幫助我的答案。我試圖在0和1之間創建一個隨機雙數,並且我不斷收到錯誤。在C中的隨機數字的麻煩#
map[x,y].setBit((int) Math.Round(((((double)Random.Next(100))/100) * 1.3), 2);
我得到錯誤說「一個對象引用是所必需的非靜態,方法或屬性‘System.Random.Next(int)的’
我敢肯定這個問題有很多問題,但我無法找到任何幫助我的答案。我試圖在0和1之間創建一個隨機雙數,並且我不斷收到錯誤。在C中的隨機數字的麻煩#
map[x,y].setBit((int) Math.Round(((((double)Random.Next(100))/100) * 1.3), 2);
我得到錯誤說「一個對象引用是所必需的非靜態,方法或屬性‘System.Random.Next(int)的’
Th e錯誤信息告訴你正是這個問題。 Random
是一類。 Next
是一種非靜態方法。您需要該類的實例或對象引用才能使用該方法。
var random = new Random();
// use random.Next(upperLimit);
你應該注意的是,如果你是在一個緊密的循環使用random
,你想在循環外部創建實例和重用,或在以其他方式更高的水平(如類的成員字段)。類別種子的方式,連續的實例會生成相同的「隨機」值序列。 This is a common pit that people have fallen into。
你也應該知道,根據您的使用情況,您得到的是否是整數,從0到99,鑄造翻一番,併除以100 ......還有一個更簡單的方法。只需使用NextDouble()
,它給出的值大於或等於0且小於1.0。
double d = random.NextDouble();
隨機是一個類。Random.Next ()是一個非靜態方法
因此,你需要實例化Random
類的一個實例。(注:爲富豪所指出的,不要讓這個地方的環...)
Random rnd = new Random();
map[x,y].setBit((int) Math.Round(((((double)rnd.Next(100))/100) * 1.3), 2);
看到這看起來像是在一個循環(甚至可能是嵌套循環)中完成的,這兩條線看起來危險地靠在一起。值得一提的是,'rnd'應該很可能不是本地的。 – spender 2012-03-30 02:46:45
好點。 ... – 2012-03-30 03:24:41
謝謝!出於某種原因,當我搜索到這個錯誤時,我從來沒有得到這個解決方案...我對這種語言有點新,因爲你可能會說^^ – Glen654 2012-03-30 02:48:33
你會很高興地注意到,這個問題已經是第4次了[谷歌(https://www.google.com/#hl=en&output=search&sclient=psy-ab&q=An+object+reference+is+required+for+the+non-static%2C+method%2C+or +屬性+%22System.Random.Next(INT)和OQ = AN +對象+參考+爲+需要+爲+的+非靜態%2C +方法%2C +或+屬性+%22System.Random.Next(INT)水溶液= f&aqi =&aql =&gs_l = hp.3 ... 553l5395l0l5883l3l3l0l0l0l0166l380l1j2l3l0.frgbld。&pbx = 1&bav = on.2,or.r_gc.r_pw.r_qf。,cf.osb&fp = 8eaf7f526a5ea16c&biw = 1440&bih = 815)。 ;) – 2012-03-30 03:00:34