VB2019隨機分組問題(不重複)

2022-01-23 08:47:26 字數 5761 閱讀 6358

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

print

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

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...