1樓:
private sub 洗牌(牌數 as integer, 新陣列() as integer)
dim 新牌(牌數 - 1) as integerfor i = 0 to 牌數 - 1
新牌(i) = i + 1
next i
已抽出牌數 = 0
剩餘牌數 = 牌數
do until 剩餘牌數 = 0
次序 = int(剩餘牌數 * rnd)
新陣列(已抽出牌數) = 新牌(次序)
for i = 次序 to 剩餘牌數 - 1新牌(i) = 新牌(i + 1)
next i
已抽出牌數 = 已抽出牌數 + 1
剩餘牌數 = 剩餘牌數 - 1
loop
end sub
這是一個過程,僅僅是洗牌過程。
發牌過程建議,6個列表框使用控制元件陣列
然後對上述過程產生的陣列從頭到尾,序號除以6餘數是多少,就新增到對應的下標的列表框中。**比較簡單,不再羅列。
2樓:
抱歉,沒看明白你想做什麼。能說說執行結果與你的設想有什麼不符嗎?
另外:1、多層巢狀的if語句,可以考慮用 select 語句代替。
2、你也可以考慮建立一個listbox物件的陣列,直接依據下標賦值,避免掉select。
怎樣使以下隨機函式不重複出現(vb)?
3樓:設計營地
我給你一個思路,你把題目儲存在陣列中,你的應該是54個題,根據隨機數的值交換兩個陣列成員的值,把順序打亂。你固定輸出一個或多個題即可。
例如:dim d(3) asinteger, v as integer
for v=1 to 3
d(3)=v
next
for v=1 to 3
if rnd>0.5 then
d(0)= d(1)
d(1)= d(v)
d(v)= d(0)
end if
next
假設,第一次隨機數大於0.5,d(1)和d(1)交換;1,2,3
第二次隨機數大於0.5,d(2)和d(1)交換;2,1,3
第三次隨機數大於0.5,d(3)和d(1)交換;3,1,2
第一次隨機數大於0.5,d(1)和d(1)交換;1,2,3
第二次隨機數不大於0.5,不交換;1,2,3
第三次隨機數大於0.5,d(3)和d(1)交換;3,2,1
第一次隨機數大於0.5,d(1)和d(1)交換;1,2,3
第二次隨機數大於0.5,d(2)和d(1) 交換;2,1,3
第三次隨機數不大於0.5,不交換;2,1,3
就出現123;312;321;213四種組合了,由於是根據隨機數交換的他也就是隨機的。
我們最後來輸出d(1),就是1,3,3,2了。每次輸出的都不一樣。就不存在重複了,當然交換的規律可以自己設定。
一般來說,在抽籤的過程中,概率是逐步升高的。
例如,有五隻籤,第一次抽取某隻籤的概率是五分之一。第二次抽取的是四分之一……
因為,第一次抽完後,就只剩下四隻簽了,要模擬抽籤的過程就要每次都要做相應的調整。
4樓:
建立一個公共變數陣列,記錄每次抽取的題號,稱為已抽取題號庫。點「開始」,隨機生成的題號與已抽取題號庫進行一一對比:
如果存在,重新生成;
如果不存在,就可以取為結果,並存進題號庫
5樓:匿名使用者
那預先把題號放在陣列中,隨機抽取一項後把該號從陣列中去掉。
還是用集合較好,
宣告區定義集合變數
dim cols as collection先初始集合:
private sub initcols
set cols=new collectiondim i as integer
for i=1 to 55
cols.add i
next
end sub
產生題號:
dim index as integer
index=int(rnd*cols.count+1) '這是產生一個隨機索引
a=cols.item(index) '通過索引獲取題號cols.remove index '然後把該項去掉
6樓:聽不清啊
給一個小程式,希望有幫到您。
dim n as integer, a(20) as integerprivate sub command1_click() '初始化n = 20
for i = 1 to n
a(i) = i
next i
command2.enabled = trueend sub
private sub command2_click() '隨機抽取不重複數字
randomize
k = int(rnd * n) + 1
print a(k);
a(k) = a(n)
n = n - 1
if n mod 10 = 0 then printif n = 0 then command2.enabled = false
end sub
7樓:6080ys點
你用的是隨機函式啊。。隨機函式只是隨機出現,不代表不會重複啊你這樣搞,定義個陣列。然後把查詢過的隨機資料儲存在陣列裡。
在下次查詢的時候使用for迴圈檢索下,然後再for裡用個if去判斷。重複的直接跳過。。。
這樣就行了、
**會寫嗎?不會的話追問,我給你寫好
8樓:匿名使用者
希望能夠幫到你
9樓:匿名使用者
不知道你的意圖,但是這個不可能產生重複的題號,你可以參考。
vb中產生不重複隨機數的方法,請看圖,我的疑問是
10樓:數學與計算機程式設計
j可以達到i+1,只是當j=i+1時,不再執行迴圈體。請看下面這段**的執行結果:
private sub command2_click()for i = 1 to 10
print i;
next i
print i
end sub
11樓:
想不明白用其它方式達成目的,跳過問題不就得了。我只會用if也沒遇過到什麼大問題
vb6.0 生成不重複的隨機數(急!)
12樓:匿名使用者
用不著象樓上那麼複雜的程式,看我的:
private sub command1_click()dim aa(10) as integerclsrandomize
for i = 1 to 10
a = int(rnd * 10)
print a
aa(i) = a
next i
end sub
再看執行結果,就知道這個程式是對的,我執行了好多遍,結果都是0-9間。只是我用的是10次,如果想產生100次,也只要改一點程式。
如果你只想4次,你會知道改吧?最後再把陣列分別賦給a,b,c,d就可以了。
13樓:匿名使用者
a=int(10*rnd)
dob=int(10*rnd)
loop until b<>a
doc=int(10*rnd)
loop until c<>b and c<>adod=int(10*rnd)
loop until d<>b and d<>a and d<>c
14樓:匿名使用者
for i = 0 to 60
don = int(rnd * 9)
loop while instr(" " & s, " " & n & " ") > 0
s = s & n & " "
next
a = split(trim(s), " ")這就是產生0~9的不重複隨機數
15樓:匿名使用者
private sub command1_click()randomize
dim t(1 to 4) as integerfor i = 1 to 4
renumber:
t(i) = int(rnd * 10)
for j = 1 to 4
if i <> j and t(i) = t(j) then goto renumber:
next
next
a = t(1)
b = t(2)
c = t(3)
d = t(4)
print a, b, c, d
end sub
用vb怎樣生成10個不重複的(1到10)隨機數
16樓:匿名使用者
dim a(1 to 10)
for i=1 to 10
a(i)=rnd*10+1
next i
用vb怎樣生成10個不重複的(1到10)隨機數?
17樓:匿名使用者
vb生成10個不重複的隨機數**:private sub command1_click()dim a(9) as integer
for i = 0 to 9
goto way1
end if
next p
end if
print a(i)
next i
end sub
18樓:
private sub command1_click()dim a(9) as integer
for i = 0 to 9
way1:
randomize
a(i) = int(rnd() * 10) + 1if i > 1 then
for p = 0 to i - 1
if a(p) = a(i) then 『與前面的對比,如果有重複,重新隨機
goto way1
end if
next p
end if
print a(i) 』列印
next i
end sub
如何在vb中產生在一定正整數範圍內的不重複的隨機數?
19樓:匿名使用者
dim ub as integer '定義下界限dim db as integer '定義上界限ub = 100
db = 10
for i = 0 to 10
randomize '生成隨機種子x = int(rnd() * (ub - db + 1)) + db '生成隨機數
msgbox x
next i
ecel怎樣隨機分組,Excel怎樣隨機分組
你的源資料有多少 在哪 想分幾組?假設,源資料在a列 1 在b1輸入 rand 回車並向下填充。2 點b列任一格 工具欄 升序排序。3 這樣就把a列隨機打亂了,再根據你的需要,分段分組就行。如 a列100行,分隨機4組。按以上公式打亂後,1 25行為一組 26 50行為二組 51 75行為三組 76...
VB關於輸出!隨機產生ASCII字元分別求09等
private sub button1 click byval sender as system.object,byval e as system.eventargs handles button1.click dim m 100 as integerdim n 128 as integerrand...
元素的陣列。隨機所有元素並排序vb編寫
private sub mand1 click randomize dim a 20 as integer for i 1 to 20 a i int rnd 101 100 print a i next i for i 1 to 20 for j 1 to 20 i if a j a j 1 th...