私のプロジェクトは非理想気体の動きを予測することですので、すべての分子に特定の数を与えるためにこのコードを書いていますが、繰り返し番号を保持しています(私はrandbetweenを使用しています) それは、同じ番号を繰り返しますか?VBAでの気体の挙動
サブRand_Number() 「AACO 20àçåæUIîñôøéあいあい÷
Dim RandNum As Long
Dim k As Long
Dim Mone As Integer
Mone = 0
Num_molecules = Sheets("Data").Range("A14").Value
RandNum = WorksheetFunction.RandBetween(1, Num_molecules)
For j = 1 To Num_molecules * 0.2
If IsEmpty(Sheets("rand").Cells(1, 1)) = True Then
Sheets("rand").Cells(1, 1) = RandNum
Else
i = 1
'RandNum = WorksheetFunction.RandBetween(1, Num_molecules)
Do 'Until IsEmpty(Sheets("rand").Cells(i, 1)) = True
If Sheets("rand").Cells(i, 1) = RandNum Then
RandNum = WorksheetFunction.RandBetween(1, Num_molecules)
Do Until RandNum = Cells(i, 1) Or IsEmpty(Cells(i, 1)) = True
If RandNum = Sheets("rand").Cells(i, 1) Then
RandNum = WorksheetFunction.RandBetween(1, Num_molecules)
Else
i = i + 1
End If
Loop
ElseIf IsEmpty(Sheets("rand").Cells(i, 1)) = False Then
i = i + 1
Else
Sheets("rand").Cells(i, 1) = RandNum
Exit Do
End If
Loop
End If
Next j
End Subの
ライアンで見つけることができますその部分。私は、この問題の解決策を更新しました。これは、dupを除外するためのアプローチと、その範囲のすべての数値が生成されるまで実行します。 'Remove'を使うよりもまだ高速です。パフォーマンスを比較するために、私はGitHub Gistにリンクしました。結果はソースファイルの一番下にあります。見てみましょう! :-) –
@LoganReed。たぶん私は問題を誤解しているかもしれませんが、範囲内のすべての乱数を列挙すると、OPが1〜10,000でないと言います。私は必要なのは、N個のシミュレーションに基づいて乱数を繰り返さないということです。リピートしたくない場合は、For i = 1〜10000ループなどのようにするのはなぜですか? –
あなたは正しいです - 私はおそらくそれを思っています。 OPは明確にする必要があります。 –