1樓: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++)
2樓:匿名使用者
先定義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--)
意思知道下,手寫**可能有錯。還有錯誤自己在改下。
3樓:岩石の審判
把已經生成的隨機數存入一個陣列,然後再次生成隨機數時,與陣列的元素比較,若相等,重新生成,若不相等,直接存入陣列。
4樓:目前登陸帳號
1、用隨機數生成函式生成隨機數
2、然後用生成的數字除與15,取餘
3、迴圈上面2步驟,一直到生成15個。
5樓:小妻丐
random r=new random();
int num=r.next(1,15);
6樓:施奧陶水蓉
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#有沒有函式能生成不重複的隨機數,比如1-10之間的不重複隨機數???
7樓:匿名使用者
用random類生成隨機數,然後還前面生成的隨機數比較,如果相同就刪除。
然後繼續用random生成隨機數只到生成的隨機數一個都不重複下面的**可以參考一下,主要是用了rand類的next方法int randomarray = new int[20];
random random=new random();
randomarray[0] = random.next(1, 10);
for (int i = 1; i < 4; i++)}} while (foundsame);}
8樓:匿名使用者
有,不過得自己寫!當取到一個隨機值時,從陣列中排除掉,再從剩餘的陣列中繼續取,直到陣列為空!
c#生成6個隨機數,要求1到33之間不重複的隨機數,要最簡單的寫法
9樓:匿名使用者
很早以前用過那隨機數的方法,不能保證不重,只能生成一個記下來再生成一個匹配一下
10樓:
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;
11樓:智翊端秋穎
1-33放在一個集合裡面,隨機數=1到集合長度。隨機一個,就取出集合對應位置的數字,並且刪除這行。繼續隨機數=1到集合長度,再取。
迴圈6次就完了。
.*** 下用c#產生一個永不重複10位隨機數
12樓:敘事詩鞍悄
我們在做能自動生成試卷的考試系統時,常常需要隨機生成一組不重複的題目,在.***
framework中提供了一個專門用來產生隨機數的類system.random。
對於隨機數,大家都知道,計算機不可能產生完全隨機的數字,所謂的隨機數發生器都是通過
一定的演算法對事先選定的隨機種子做複雜的運算,用產生的結果來近似的模擬完全隨機數,這
種隨機數被稱作偽隨機數。偽隨機數是以相同的概率從一組有限的數字中選取的。所選數字並
不具有完全的隨機性,但是從實用的角度而言,其隨機程度已足夠了。偽隨機數的選擇是從隨
機種子開始的,所以為了保證每次得到的偽隨機數都足夠地「隨機」,隨機種子的選擇就顯得
非常重要。如果隨機種子一樣,那麼同一個隨機數發生器產生的隨機數也會一樣。一般地,我
們使用同系統時間有關的引數作為隨機種子,這也是.*** framework中的隨機數發生器預設採
用的方法。
我們可以使用兩種方式初始化一個隨機數發生器:
第一種方法不指定隨機種子,系統自動選取當前時間作為隨機種子:
random ro = new random();
第二種方法可以指定一個int型引數作為隨機種子:
int iseed=10;
random ro = new random(10);
long tick = datetime.now.ticks;
random ran = new random((int)(tick & 0xffffffffl) | (int) (tick >> 32));
這樣可以保證99%不是一樣。
之後,我們就可以使用這個random類的物件來產生隨機數,這時候要用到random.next()方
法。這個方法使用相當靈活,你甚至可以指定產生的隨機數的上下限。
不指定上下限的使用如下:
int iresult;
iresult=ro.next();
下面的**指定返回小於100的隨機數:
int iresult;
int iup=100;
iresult=ro.next(iup);
而下面這段**則指定返回值必須在50-100的範圍之內:
int iresult;
int iup=100;
int idown=50;
iresult=ro.next(idown,iup);
除了random.next()方法之外,random類還提供了random.nextdouble()方法產生一個範
圍在0.0-1.0之間的隨機的雙精度浮點數:
double dresult;
dresult=ro.nextdouble();
但是用random類生成題號,會出現重複,特別是在數量較小的題目中要生成不重複的的題目
是很難的,參考了網上的一些方法,包括兩類,一類是通過隨機種子入手,使每一次的隨機種
子不同,來保證不重複;第二類是使用一些資料結構和演算法。下面主要就第二類介紹幾個方
法。方法1:思想是用一個陣列來儲存索引號,先隨機生成一個陣列位置,然後把這個位置的索引號
取出來,並把最後一個索引號複製到當前的陣列位置,然後使隨機數的上限減一,具體如:先
把這100個數放在一個陣列內,每次隨機取一個位置(第一次是1-100,第二次是1-99,...),
將該位置的數用最後的數代替。
int index = new int[15];
for (int i = 0; i < 15; i++)
index = i;
random r = new random();
//用來儲存隨機生成的不重複的10個數
int result = new int[10];
int site = 15;//設定下限
int id;
for (int j = 0; j < 10; j++)
方法2:利用hashtable。[nextpage]
hashtable hashtable = new hashtable();
random rm = new random();
int rmnum = 10;
for (int i = 0; hashtable.count < rmnum; i++)
}方法3:遞迴,用它來檢測生成的隨機數是否有重複,如果取出來的數字和已取得的數字有重複就重新隨機獲取。
random ra=new random(unchecked((int)datetime.now.ticks));
int arrnum=new int[10];
int tmp=0;
int minvalue=1;
int maxvalue=10;
for (int i=0;i<10;i++)
.........
.........
public int getnum(int arrnum,int tmp,int minvalue,int maxvalue,random ra)
n++;
}return tmp;}
13樓:當愛依成傳說
使用guid的雜湊碼作為種子值,就不會重複了,**如下:
public class randomhelper{///
///生成制定位數的隨機碼(數字)
/////////
14樓:幻想武士
說的比較籠統!
永不重複10位隨機數
?包括數字和字母?
15樓:匿名使用者
思路:可以用隨機數加時間的方法,這樣絕對不會重複
c動態生成的textbox如何賦值
string texts for int i 0 i row i c 怎麼給動態生成的控制元件 textbox 賦值。foreach control c in this.controls 當觸發什麼事件時自動生成textbox,然後就繫結值啊 通過attributes.add text 你想賦得值 ...
c語言的題,求高手解答,求高手解答一下C語言題
同學,你好,你的程式中有錯誤 程式的前面幫你修改了一下,但是在 p1 w 處,不知道你是怎麼抄的沒有一個w的變數 修改正確後在發來 吧 include include void fun char int m int main c語言的題,求高手解答 結果應該是721 先看main函式,i 1時,i ...
如何反編譯c 生成的exe檔案?反彙編就不必說了要e
np複雜度問題,如果樓大能解決可以去申請圖靈獎。簡直太難了,猶如登天,我也想檢視,別人的軟體,編碼方式,可是,可能嗎?高階語言與機器來語言不是一一對 源應的,所以將exe檔案反編譯成c 語言,或其它任何的高階語言,原則上都是不可能的.反彙編成組合語言是可能的,不過現在的程式都這麼複雜而龐大,即使你懂...