-
for n = 0 to 155
a = int(rnd * 25)
b = int(rnd * 25)
c = y(a): y(a) = y(b): y(b) = c
next 1.你說的是隨機數的範圍(1-n)。如果要實現任何 n 值,只需將此處的 25 更改為所需的 n 值即可。 RND 生成乙個介於 0-1 之間的隨機數。 使用 rnd*25 時,該值介於 0 和 25 之間。
2.你說出現n次關閉。 這裡的 n 是 155,這裡的陣列執行任意兩個值交換 156 次。
所以你的**會這樣做:
const maxvalue = 25 '範圍 n 的定義可以更改為任何值。
const maxcount = 155 '交換次數 n 的定義可以更改為任何值。
dim y() as integer
redim y(0 to (maxvalue-1)) as integer
dim p as integer
sub form_load()
dim n as integer, a as integer, b as integer, c as integer
p=0 for n = 0 to maxvalue-1
y(n) = n
next for n = 0 to maxcount
a = int(rnd * maxvalue)
b = int(rnd * maxvalue)
c = y(a): y(a) = y(b): y(b) = c
next end sub
sub com1_click()
msgbox y(p)
p=p+1if p>ubound(y) then end
end sub
-
不太明白你需要做什麼,但對於你提到的兩個:
1.如果控制隨機數在 1 n 的範圍內:它應該是:int(rnd * n) +1
2.在程式發生 n 次或發生 n 次時關閉程式?
-
只需儲存乙個數字並使用它來建立物件??? 但是你所有的數字都可以在乙個班級中...... 很簡單,你的 n 總是有上限的,它不可能是無限的,然後你定義乙個陣列,陣列的長度就是上限(當然,你可以使用動態陣列)。
生成隨機數的方法還是使用隨機數函式,但是要生成類似於圖紙的隨機數,那麼每次都必須將隨機數的數量與前面的隨機數進行比較,如果直接丟棄,重新繪製,則一種方法是一樣的,但是這個方法以後會執行很多次, 還有一種方法是每次抽取,隨機範圍為-1,然後下乙個隨機數找出所有小於或等於這個數字但已經抽到的數字。然後用這個數字把這個數字加起來(相當於在支票的號碼中已經抽出的數字被隔開,也就是抽獎箱裡沒有號碼),加完之後,看看有沒有和這個號碼開的號碼一樣,如果沒有號碼就是這個號碼, 如果有 +1,然後 than 直到 no,則此方法對每個隨機數隨機一次,並且其方法之一隨機到最後乙個
-
1. 陣列 a(1) 到 a(n) 被分配從 1 到 n 的初始值
2. 使用隨機化使 x=n
3. 生成 1. x 之間的隨機整數,交換 a(x) 和 a(n),其中 x 減去 1。
4. 如果 x>1,則轉到第 3 步,否則演算法結束。
-
x 基數 = 33
x 倍數 = 126-33
randomize
rrandom = rnd(1)。
y 目標 1 = r 隨機 * x 倍數 + x 基數。
Y 目標 2$ = CHR(y 目標 1)。
如果不是 y,則目標 2 ="z" then'連線到文字1
目標 2end 如果
第乙個完成了''需要除錯。
-
相信這就是你想要的結果,隨機數範圍是1-20,你可以設定它,一組返回7個數字,你也可以設定它,最後給你加乙個公升序排序,如果可以的話,你可以給它打更高的分。 (*
option base 1 '定義以 1 開頭的陣列下標。
private sub command1_click()
dim i as integer, j as integer
dim num_array as string
dim str as string
for i = 1 to 5 '輸出 5 組。
num_array = rand_num(20, 7)
str = "部分" & i & "群:" & num_array
print str
nextend sub
function rand_num(max as integer, count as integer) as string
max 是隨機數的最大範圍,count 是組中生成的數字數。
dim i as integer, j as integer, k as integer, t as integer, rand as integer
redim sum(max) as integer
dim str as string
dim min as integer
randomize
if max < count then max = count
for i = 1 to max '為陣列總和賦值
sum(i) = i
nextfor j = max to 2 step -1 '打亂 sum 陣列中數字的順序。
rand = int(rnd * j - 1)) 1
t = sum(j): sum(j) = sum(rand): sum(rand) = t
nextmin = sum(1)
for i = 1 to count - 1 '在此示例中,前七個數字按公升序排序。
for j = i + 1 to count
if sum(i) >sum(j) then t = sum(i): sum(i) = sum(j): sum(j) = t
nextnext
for k = 1 to count '取出排序後的結果並將它們一起返回。
str = str & sum(k) &" "
nextrand_num = str
end function
-
還沒除錯,試試這一段**:
新增標籤1
dim a1 as integer,a2 as integer,a3 as integer,a4 as integer,a5 as integer,a6 as integer,a7 as integer
dim mystr as string
for a1=1 to 14
for a2=a1+1 to 15
for a3=a2+1 to 16
for a4=a3+1 to 17
for a5=a4+1 to 18
for a6=a5+1 to 19
for a7=a6+1 to 20
doevent
mystr=format(a1,"00 ") &format(a2,"00 ") &format(a3,"00 ") &format(a4,"00 ") &format(a5,"00 ") &format(a6,"00 ") &format(a7,"00 ")
mystrnext
nextnext
nextnext
nextnext
-
嘿,我的除錯都是死的,長組資料。
-
您可以建立乙個陣列,例如 x(i),並為每個陣列元素分配要顯示的數字。 首先 i=0,每次單擊按鈕時,將 x(i) 的值分配給文字框,文字框顯示 x(i) 的值,並且 i=i+1。 例如,如果要顯示 5 組資料,可以每次點選按鈕判斷是否達到 5,如果 =5,則 i=0
這將使您能夠滿足您的要求。
-
你是幹什麼的? 是否要在同一行上顯示? 然後使用。
拿起你想展示的內容。
這應該可以解決問題。
-
你想要的**就在這裡,並且已經驗證好了!!
private sub command1_click()dim num(1 to 6) as integerdim i, j, t as integer'= 獲得 6 個大於 1 且小於 33 的不同整數,因為 i = 1 到 6
restart: t = int((33 - 1 + 1) *rnd + 1)
for j = 1 to ubound(num)if num(j) = t then
goto restart
end if
next j
num(i) = t
next i
顯示在標籤上 = num(1)。
num(2)
num(3)
num(4)
num(5)
num(6)
end sub
未來一起學習和研究!
-
新增乙個標籤,然後選擇它,複製、貼上,當詢問是否要建立控制項陣列時回答“是”,然後再貼上 4 次,窗體總共有 6 個 label1。 然後寫下下乙個**:
private sub command1_click()dim i as integer
randomize
for i = 0 to 5
label1(i).caption = int(rnd * 33) +1
這是 [1,33] 的範圍,如果需要 (1,33),請將其更改為 int(rnd * 31) +2
nextend sub
-
總共有10個**,**上寫著“0-9”,10個數字嗎?
如果是這樣的話,用陣列 a 10 初始化這 10 並不難。 0 對應於寫有“0”的 **,依此類推。
如果獲得隨機數 21,則 2 和 1 可用於相應的 **。
-
使用 cstr 函式將數字轉換為字串,然後您可以使用 left 和 right 函式來獲取部分(在本例中為 left 1 和right 1)。
任何兩種低階時尚結合在一起後,如果不出天價,絕對是高階時尚,這是100%,永遠不會成為低階時尚。 所以你可以放心。 但是,讓我告訴你。 >>>More