c隨機生成多個不重複數,C 隨機生成多個不重複數

時間 2021-05-07 20:00:10

1樓:

首先確定隨機數的大小範圍和型別 比如:

[1,100] 的整數

然後是隨機數的多少? 比如按照上面的設計 如果 超過 100. 不可能不重複

不重複水機數的方法很多

我一般按集體需求來做:

不如範圍很大,隨機數很少:從10000個裡面取10個 這樣,直接隨機 做簡單判斷就可以

random random = new random();

int n=random.next(1,10000);

然後判斷n有沒有了

用迴圈就可以了

但還有一種需求是:從100裡面取100個(或者90個)這樣的時候,我會聲請一個陣列,把1到100都存起來然後用洗牌的方式來交換這個陣列裡面的數

然後隨機抽取,用一個就少一個

反正就是做個偽隨機

2樓:匿名使用者

random ro=new random(1);//定義隨機數類

byte by=new byte[10];//定義位元類,8位無符號數,即0-256

ro.nextbytes(by);//產生10位隨機數,比較簡單

3樓:匿名使用者

參考一下吧

c#有沒有函式能生成不重複的隨機數,比如1

4樓:

c#有隨機器random,可以生成數字。**一般這樣:

random rand = new random(); //這個是當前時間作為隨機種子,生成的數字有可能重複,機率小。

rand.next(1, 10000);生成1與10000之間的int

如果想重複的機率小一些,就給random()一個種子

long tick = datetime.now.ticks;

random ran = new random((int)(tick & 0xffffffffl) | (int) (tick >> 32));

但也不是絕對的,機率非常小,幾乎可以不計。如果非要絕對不復重,你只有生成數字後去和以前生成的數字進行比較(寫個遞迴,但效能不好)。

5樓:空心蓮

可以給所有的隨機數設屬性(true or false)

c#生成制定範圍和數量的隨機數,要求不重複

6樓:**最大功能

listlist = new list();//用來存放所要的隨機數random r = new random();

for (int i = 0; i < 5; i++)//弄5個隨機數

else}

c# 如何生成不重複的1-100隨機數。

7樓:匿名使用者

有兩種思路:1、隨機生成一個1-100的數,然後判斷重複,如果重複再生成一次;

2、建立一個陣列,元素內容為1-100,對元素隨機排序。

請參考下面的**

public void generaterandomnums()value = rand.next(1, 21);

if (!list.contains(value))}foreach (int temp in list).", temp);}}

第二種思路:

int a = ;

int b = a.orderby(x => guid.newguid()).toarray();

foreach (int v in b)

console.writeline(v);

console.readkey();

8樓:陽光的雷咩咩

random r = new random();

int nums = enumerable.range(1, 100)

.orderby(x => r.next()).toarray();

foreach (int n in nums)console.writeline(n);

c# winfrom 隨機生成5個在0 到50直接的隨機數,切不重複,怎麼實現啊

9樓:斬光_者

主要函式:

public listgetnum()

else

else}}

return result;}

10樓:匿名使用者

random r = new random();

dictionarydic = new dictionary();

while (dic.count + 1 < 6)這個不是正態隨機

如何讓c#產生不重複的隨機數

11樓:匿名使用者

「隨機數 和 不重複 是相悖的兩個概念」。因此這個問題理論上無解。

隨機數,(一般c#中)指的是隨機生成的一個整型或者浮點型數字。

不重複,指的是在一個陣列中,每個元素都有唯一性。

(我們比方說,要生成10個不重複的隨機數)

如果在一個範圍內生成多個隨機數, 那麼肯定是會有生成「重複」的機率, 如果要做到不重複,1、要麼每次生成時,對範圍進行重新判定,

2、要麼是生成後,比對已生成的資料,如果相同就重新生成。

無論哪一種做法,都可以實現「生成一組看似隨機的不重複資料」,但是這個不能叫「隨機數」。

1、的做法是指定新範圍,從邊界規避掉重複的可能性,所以這一組10個資料其實取值範圍是不同的,因為不能叫做「同一組隨機數」。

2、的做法其實是會生成重複隨機數的, 只是我們把它過濾掉了,因此也不是「不重複隨機數」。

所以這個問題如果不去鑽牛角尖,有這麼兩種簡單做法去實現,如果嚴謹的去**,其實是個悖論。

12樓:暖蘭菲

要不重複的話,就用guid類把

guid g = guid.newguid(); //建立一個guid的物件

console.writeline(g.tostring());//然後tostring() 你用控制檯輸出看看,這種隨機產生的十六進位制數字,會重複的機率幾乎沒有。

13樓:匿名使用者

static double buf = 0.5;

private static double ran()while (math.abs(num - buf) < 0.000001);

buf = num;

return (num);

}//0.00001表示接近於0的實數(伊普斯龍)//主程式呼叫 ran()即可,例如: r=ran();

***************===分割線********************

如果程式較小:可以如下

private static double ran()

14樓:匿名使用者

如果你的隨機數是整數,那麼不可能不重複。隨機數的產生次數,超過了整數的範圍,必然會出現重複。如果不考慮範圍的問題,每次產生隨機數後,把它記下來,用於檢查下次隨機數是否重複。

如果不是整數,你可以用guid來避免重複

c#最簡單的不重複隨機數生成

15樓:丁洪飛

string temp = ""; //臨時容器int n =0;

random rd = new random();

while(n <10)

else

}console.readline();

16樓:安靜的

去看看這個吧 類似的!希望對於有幫助!

excel隨機生成數字,EXcel隨機生成數字

千秋遐想 excel隨機數函式 太極健 隨機數rand 取整int round四捨五入 在a6中輸入以下公式後右拉到e6 round rand 50 100,或 int rand 50 100 若要生成 a 與 b 之間的隨機實數,請使用 rand b a a如果要使用函式 rand 生成一隨機數,...

c如何生成10位隨機數,C 中怎麼生成4位隨機數

方法1 public static int getrandom1 int minvalue,int maxvalue,int count array.sort keys,items int result new int count array.copy items,result,count retu...

c語言中如何生成0到1的隨機數,c語言中如何生成1個0到1的隨機數

八哥說科技 c語言中生成1個0到1的隨機數可以執行語句 float b rand rand max 1.0 解析 標準c庫中函式rand 可以生成0 rand max之間的一個隨機數,其中rand max 是stdlib.h 中定義的一個整數,它與系統有關。rand 函式沒有輸入引數,直接通過表示式...