■18988 / ) |
Re[2]: 条件式が無条件で満たされる?
|
□投稿者/ 匿名希望 -(2006/08/13(Sun) 02:50:18) [ID:2eMbhZ9o]
| ↓同一文字列除外処理ここから
For バケラッタ番号 = 1 To 5400 If バケラッタ順番 = 0 Then Incr バケラッタ順番 オリジナルバケラッタ[バケラッタ順番] = バケラッタ名[バケラッタ番号] ElseIf バケラッタ順番 >= 1 Then For バケラッタワルツ = 1 To バケラッタ順番 If InStr(オリジナルバケラッタ[バケラッタワルツ],バケラッタ名[バケラッタ番号]) = 0 Then Incr バケラッタ順番 オリジナルバケラッタ[バケラッタ順番] = バケラッタ名[バケラッタ番号] Break EndIf Next EndIf Next
↑同一文字列除外処理ここまで
変数の役割はこうです。
バケラッタ名(配列)…………………ランダムな文字列(親記事ではRandom関数で代用) オリジナルバケラッタ(配列)………同一の文字列が算出された物を除いたオリジナルの文字列郡(現状では同一文字列も投入されてしまう) バケラッタ順番…………………………オリジナルの配列用の番号
実際に使用している処理はこのようになっています。
具体的には 「算出された文字列をそれまでに現れた文字列と比較し、少しでも違うならば別な変数に保存する」 という処理です。
これまでにも 「文字列をいくつか算出した後になぜか同じ文字列が算出される」 という現象を何度も確認しています。 周期は長いもののRandom関数ならともかく まったくのアトランダムで算出されている文字列が 750回程度回った後で同じになるのは変です。 この数字は多いとお思いでしょうが実は約400万通り以上の文字列を算出する方法があります。 この方法を使っても750回程度でループして同じ文字列が出ます。 これを解消する為に同じ文字列をカットしようとしたのですが、失敗です。
私はOpen、Print、Closeの各コマンドを使っているので結果が一目瞭然です。 オリジナルバケラッタ」の内容を全て書き出す処理になっているのですが、 なぜか同じ文字列まで書き出されてしまいます。
凡ミスをしていたらすみません。
どのような条件式を使えばいいのでしょうか。
|
|