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

2021-03-24 02:14:24 字數 5719 閱讀 8318

1樓:斬光_者

主要函式:

public listgetnum()

else

else}}

return result;}

2樓:匿名使用者

random r = new random();

dictionarydic = new dictionary();

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

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

3樓:匿名使用者

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

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

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

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

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

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

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

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

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

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

4樓:暖蘭菲

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

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

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

5樓:匿名使用者

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()

6樓:匿名使用者

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

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

求高手,c#,如何生成15個1-15之間的不重複的隨機數???

7樓:archer羽的傳說

考慮到演算法效率~你其實可以用另一種方式來實現~先生成一個1-15按順序的陣列

然後生成隨機變數種子~

每次取一個在陣列長度內的隨機數

然後取出對應的數值並放到另一個陣列中

而存的那十五個數值的陣列則把該數值去除~這樣十五次就能得到了~**如下:

//定義陣列~並給出長度

listilist = new list();;

//設定初始值

for (int i = 1; i < 16; i++)random rd = new random();

//要得到15個隨機數

int shownum = new int[15];

for (int i = 0; i < 15; i++)

8樓:匿名使用者

先定義1-15的集合,然後隨機從該集合中拿出一個來放到一個陣列中,最後再把這個陣列遍歷下

listlist=new list();

for(int i=1;i<=15;i++)list.add(i);

int arr=new int[15];

random rand=new random();

for(i=15;i>1;i--)

意思知道下,手寫**可能有錯。還有錯誤自己在改下。

9樓:岩石の審判

把已經生成的隨機數存入一個陣列,然後再次生成隨機數時,與陣列的元素比較,若相等,重新生成,若不相等,直接存入陣列。

10樓:目前登陸帳號

1、用隨機數生成函式生成隨機數

2、然後用生成的數字除與15,取餘

3、迴圈上面2步驟,一直到生成15個。

11樓:小妻丐

random r=new random();

int num=r.next(1,15);

12樓:施奧陶水蓉

intxl

=new

int();

inttmp=0;

string

output

="the

numbers

are:

";randomrd=

newrandom();

//把1-33放在陣列裡

for(inti=

0;i<

33;i++)

//迴圈6次

for(inti=

0;i<

6;i++)

return

output;

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

13樓:**最大功能

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

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

else}

c#如何生成一個不重複隨機陣列

14樓:乁

隨機產生陣列的下標,不直接產生數,我舉隨機產生0~9的隨機數int num = new int[10];

int newnum = new int[10];

int i,r = 9;

int n;

int tmp;

random rand = new random();

for (i = 0; i < 10; i++)//初始化這個陣列,0~9

///這個演算法只需要迴圈你的數範圍的次數而已for (i = 0; i < 10; i++)for (i = 0; i < 10; i++)", newnum[i]);

}console.read();

15樓:匿名使用者

////// 返回隨機陣列

////// 最小值

/// 最大值

/// 個數

///public int getrandomunrepeatarray(int minvalue, int maxvalue, int count)

array.sort(keys, items);

int result = new int[count];

array.copy(items, result, count);

return result;

}********************====//呼叫例項

int arr = getrandomunrepeatarray(1, 10, 10);

for (int i=0; i < arr.length; i++)

16樓:匿名使用者

for(int i = 0

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

17樓:匿名使用者

有兩種思路: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();

18樓:陽光的雷咩咩

random r = new random();

int nums = enumerable.range(1, 100)

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

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

c#生成6個隨機數,要求1到33之間不重複的隨機數,要最簡單的寫法

19樓:匿名使用者

很早以前用過那隨機數的方法,不能保證不重,只能生成一個記下來再生成一個匹配一下

20樓:

int xl = new int();

int tmp = 0;

string output = "the numbers are: ";

random rd = new random();

for (int i = 0; i < 33; i++)for (int i = 0; i < 6; i++)return output;

21樓:智翊端秋穎

1-33放在一個集合裡面,隨機數=1到集合長度。隨機一個,就取出集合對應位置的數字,並且刪除這行。繼續隨機數=1到集合長度,再取。

迴圈6次就完了。

c#生成6個隨機數,要求1到33之間不重複的隨機數,要最簡單的寫法

22樓:匿名使用者

1-33放在一個集合裡面,隨機數=1到集合長度。隨機一個,就取出集合對應位置的數字,並且刪除這行。繼續隨機數=1到集合長度,再取。 迴圈6次就完了。

23樓:

int xl = new int();

int tmp = 0;

string output = "the numbers are: ";

random rd = new random();

//把1-33放在陣列裡

for (int i = 0; i < 33; i++)//迴圈6次

for (int i = 0; i < 6; i++)return output;

在c#中怎麼按時間和隨機數來生成唯一不重複的定單號

24樓:匿名使用者

這個穩定的解決辦法是利用資料庫來實現的。

如果是sql server可以利用自增長型別

如果是oracle 可以利用sequence

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 函式沒有輸入引數,直接通過表示式rand 來...

怎麼用c 生成指定隨機數,在c 裡怎麼弄隨機數?

include include include using namespace std int main srand unsigned time null 初始化時間種子 int ret rand 3 產生 0 1 2 三種隨機數 int real pow 2,ret 2的0次方 1 2的1次方2 ...

生成1到100之間的隨機數,並且對其中的偶數進行降序排

include include include using namespace std int main cout endl 列印出裡面的偶數,不是必要,清楚點而已 cout 其中的偶數有 endl int c1 0 for int z 0 z 50 z cout endl int c2 c1 把拿...