
8 7 9 3 5 2 1 4 6
4 7 8 1 9 2 5 6 3
2 5 4 3 6 7 9 8 1
2 1 4 6 8 9 3 7 5
8 3 1 2 6 4 9 5 7
のような9桁の順列をランダムに発生するプログラムを十進BASICで作ったのですが、ものすごく遅いです(^O^)。
稀に数秒でできることもありますが、ほとんど15秒以上かかります。
このコードではCでやっても遅いと思います。いい方法はないでしょうか?
DIM s(1 TO 9)
LET flg = 1
LET st = TIME
DO WHILE flg = 1
RANDOMIZE
FOR n = 1 TO 9
LET s(n) = INT(RND*9+1)
NEXT n
FOR n = 1 TO 9 !ここが遅い原因
FOR k = n+1 TO 9
IF s(n) = s(k) THEN GOTO 100
NEXT k
NEXT n
LET flg = 0
100
LOOP
FOR n = 1 TO 8
PRINT USING "# ": s(n);
NEXT n
PRINT USING "#": s(9);
LET ed = TIME
PRINT
PRINT
PRINT "所要時間 ";ed-st
END
No.1ベストアンサー
- 回答日時:
こんにちは。
何となくですが、乱数で、取り合えず9個の数字を適当に入れて、それが、
1~9まで1つずつ使われているかをチェックしている様に感じます。
例えば、最初にLET s(n)に1~9までを入れて、乱数で、配列内の入れ替えを
してはダメでしょうか? それなら、同じ数字を使っているかのチェックが
不要になりますので、処理スピードは毎回同じ様になるかと思います。
> 初にLET s(n)に1~9までを入れて、乱数で、配列内の入れ替えを
> してはダメでしょうか?
ああ、なるほど!
丁寧な回答まことにありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
OutOfMemoryExceptionの回避策...
-
エクセルでXY座標に並べられた...
-
C#でbyte配列から画像を表示さ...
-
Dir関数で読み取り順を操作でき...
-
VBScriptでCSVファイルを読み出...
-
DBから取得した値を配列へ代入する
-
レコードセットの中身を配列に...
-
グラフの「項目軸ラベルに使用...
-
COBOLの基本的な事なので...
-
コンボボックスのインデックス...
-
Excelのメモリ(配列)の上限は2G...
-
配列の中の最大値とそのインデ...
-
EXCELを使って、アクセスログを...
-
VBで配列に格納されているデー...
-
CheckBoxの配列化
-
vba フィルター 複数条件 3つ以...
-
定数配列の書き方
-
.NET 文字コードの変換
-
8bitインデックス画像の入出力方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
C#でbyte配列から画像を表示さ...
-
エクセルでXY座標に並べられた...
-
Dir関数で読み取り順を操作でき...
-
vba フィルター 複数条件 3つ以...
-
配列のペースト出力結果の書式...
-
複数のtextboxの処理を一括で行...
-
Excelのメモリ(配列)の上限は2G...
-
配列の中の最大値とそのインデ...
-
大量の変数を定義するにはどう...
-
Excel2010のinputboxで複数デー...
-
COBOLの基本的な事なので...
-
構造体配列内の文字列検索のよ...
-
VBAでMODE関数をつくる
-
Redim とEraseの違いは?
-
VBScriptでCSVファイルを読み出...
-
VB6のメモリ解放に関して
-
VB.NETの配列にExcelから読み込...
-
Segmentation Fault (メモリ制限?)
-
ActiveReports(アクティブレポ...
おすすめ情報