▼スレッド
│
└◇799:ランスウについて [なず] 10/06 04:53
└◇800:Re:ランスウについて [moon] 10/06 09:13
└◇801:Re[2]:ランスウについて [なず] 10/08 00:08
└◇802:Re[3]:ランスウについて [moon] 10/08 09:05
└◇808:Re[4]:ランスウについて [なず] 10/09 00:10<-last
またおじゃまさせてもらいました(^^;スレッド一覧
教えてほしいのはズバリ「ランスウ」のことなのですが、うちで動かしているSoSでも同じステラが続けて出るや、探索でも同じものが3回連続でた等の事がたまにあります。
以前本家BBSにて「srand(time | $$);を2回行うとランスウ値がおかしくなる」との書き込みを見たことがあり、finditem等にあるsrand(time | $$);を消去し、sos.cgiの上の方(mainより上最初のrequire 'jcode.pl';の下)へ移動させている経緯があります。
単純な体感ではまったくデフォよりもいいのかなぁ?と思ったりもしたのですが、あまり変わっていないようでして。
探索アイテムの数も(確率も)かなり多くしているので、2度はよいとしても3回ともなるとなにかおかしいことが起きているのか?とやはり思ってしまいます。
上記のいじりが原因なら元にもどせばよいだけですが、元々そういう傾向にあると思うので、違う方法なりで「できるだけランスウっぽくする」方法があるなら、ぜひ教えて頂きたいのですが....
やはりPCにランスウを求めるのが難しいんでしょうかねぇ(^^;
厳密にランスウにならなくても同じ結果が固まりにくくする方法などご存じでしたら宜しくお願いします。
まだDLして注意書きを読んだだけですが、新作のバックアップ用ソース落とさせて頂きました。(ついで書きしてすいません。(^^; 負荷が高いとのことですが月1のバックアップとか楽になりそうですね、活用させてもらうつもりです^ー^)
> 教えてほしいのはズバリ「ランスウ」のことなのですが、うちで動かしているSoSでも同じステラが続けて出るや、探索でも同じものが3回連続でた等の事がたまにあります。スレッド一覧
> 以前本家BBSにて「srand(time | $$);を2回行うとランスウ値がおかしくなる」との書き込みを見たことがあり、finditem等にあるsrand(time | $$);を消去し、sos.cgiの上の方(mainより上最初のrequire 'jcode.pl';の下)へ移動させている経緯があります。
> 単純な体感ではまったくデフォよりもいいのかなぁ?と思ったりもしたのですが、あまり変わっていないようでして。
> 探索アイテムの数も(確率も)かなり多くしているので、2度はよいとしても3回ともなるとなにかおかしいことが起きているのか?とやはり思ってしまいます。
> 上記のいじりが原因なら元にもどせばよいだけですが、元々そういう傾向にあると思うので、違う方法なりで「できるだけランスウっぽくする」方法があるなら、ぜひ教えて頂きたいのですが....
> やはりPCにランスウを求めるのが難しいんでしょうかねぇ(^^;
> 厳密にランスウにならなくても同じ結果が固まりにくくする方法などご存じでしたら宜しくお願いします。
これらのことは複数探索のことですよね?(以前本家BBSで単数探索でもかたよりが出るというのがありましたが。)
乱数的には変になりますが、単純に同じアイテムが連続して見付かりにくいようにするのには、
$rnd = int(rand(100)) + 1;
を、
if($count & 1){
# 2回に1回はこちらの処理
$rnd = 100 - int(rand(100));
}
else{
# 通常の処理
$rnd = int(rand(100)) + 1;
}
$count++;
とすると効果があるかもしれません。
> まだDLして注意書きを読んだだけですが、新作のバックアップ用ソース落とさせて頂きました。(ついで書きしてすいません。(^^; 負荷が高いとのことですが月1のバックアップとか楽になりそうですね、活用させてもらうつもりです^ー^)
バックアップ対象を分けたbackupcgi.cgiを複数作成してそれぞれ実行すれば1回ごとの負荷は少なくなると思います。
例えば、test1/、test2/、test3/をバックアップするのであればそれらを1つずつ記述したbackupcgi.cgiを3つ用意してそれぞれ実行すると。(backupcgi.cgiの名前を変更しておけば同じディレクトリで同じ保存ディレクトリにバックアップが取れますし。)
# そもそも動くかどうかが一番の懸念ですが。
> これらのことは複数探索のことですよね?(以前本家BBSで単数探索でもかたよりが出るというのがありましたが。)スレッド一覧
> 乱数的には変になりますが、単純に同じアイテムが連続して見付かりにくいようにするのには、
> $rnd = int(rand(100)) + 1;
> を、
> if($count & 1){
> # 2回に1回はこちらの処理
> $rnd = 100 - int(rand(100));
> }
> else{
> # 通常の処理
> $rnd = int(rand(100)) + 1;
> }
> $count++;
> とすると効果があるかもしれません。
言葉が足りなかったかもしれません(^^;
複数探索ではなく、単純な1度のみの探索です。(デフォルトと同じ状態)
探索決定>結果、探索決定>結果....の状態が同じものが出やすい、という事で質問しました。
やはりおかしい部分があるんでしょうか....(^^;
探索の仕方はデフォとおなじく1度きりの探索ですが、内部自体は色々手をいれているので、そのあたりでしくじっている可能性もあるかとおもいますが、アイテム数は多く設定しているので同じ物が何度も連続ででるのはふにおちなくて....(2回の探索で同じステラが2こ連続、というのがさらに....単純に偶然ならいいのですがどうやって確認したらよいものかと^^;)
> バックアップ対象を分けたbackupcgi.cgiを複数作成してそれぞれ実行すれば1回ごとの負荷は少なくなると思います。
> 例えば、test1/、test2/、test3/をバックアップするのであればそれらを1つずつ記述したbackupcgi.cgiを3つ用意してそれぞれ実行すると。(backupcgi.cgiの名前を変更しておけば同じディレクトリで同じ保存ディレクトリにバックアップが取れますし。)
>
> # そもそも動くかどうかが一番の懸念ですが。
なるほど、一気に処理させずに手動で分けるわけですね、メモしておきます(^ー^)b
> 複数探索ではなく、単純な1度のみの探索です。(デフォルトと同じ状態)スレッド一覧
> 探索決定>結果、探索決定>結果....の状態が同じものが出やすい、という事で質問しました。
> やはりおかしい部分があるんでしょうか....(^^;
それなら以前本家BBSで書いた方法で、
> 症状の改善を無視して、無理やりに1回ごとに見付かるアイテムのランダム性をアップさせるひとつのアイディアとして、
> $poison = int(rand(100)) + 1;
> $stellatio = int(rand(100)) + 1;
> $rnd = int(rand(100)) + 1;
> 上記オリジナルソースを、
> if(time & 1){
> $poison = int(rand(100)) + 1;
> $stellatio = int(rand(100)) + 1;
> $rnd = int(rand(100)) + 1;
> }
> else{
> $poison = 100 - int(rand(100));
> $stellatio = 100 - int(rand(100));
> $rnd = 100 - int(rand(100));
> }
> といった感じにするというのもある程度効き目があるのではないでしょうか。
>
> # 乱数の偏りを時間的に2つに分けただけですが。
をやってみれば少しは緩和するかと思います。
他にはsrandをやっている場合にその引数を適切な値に変えるということもやってみる価値はあります。(Webで探せばどういった値が良いのかヒントが見付かるかと思います。)
> 探索の仕方はデフォとおなじく1度きりの探索ですが、内部自体は色々手をいれているので、そのあたりでしくじっている可能性もあるかとおもいますが、アイテム数は多く設定しているので同じ物が何度も連続ででるのはふにおちなくて....(2回の探索で同じステラが2こ連続、というのがさらに....単純に偶然ならいいのですがどうやって確認したらよいものかと^^;)
$rndや$stellatioの値をpush(@msg, 〜)で出力して確認してみては。
同じ値またはかなり近い値が連続したらプログラムの不備も考えられるということで。
> それなら以前本家BBSで書いた方法で、スレッド一覧
> > 症状の改善を無視して、無理やりに1回ごとに見付かるアイテムのランダム性をアップさせるひとつのアイディアとして、
> > $poison = int(rand(100)) + 1;
> > $stellatio = int(rand(100)) + 1;
> > $rnd = int(rand(100)) + 1;
> > 上記オリジナルソースを、
> > if(time & 1){
> > $poison = int(rand(100)) + 1;
> > $stellatio = int(rand(100)) + 1;
> > $rnd = int(rand(100)) + 1;
> > }
> > else{
> > $poison = 100 - int(rand(100));
> > $stellatio = 100 - int(rand(100));
> > $rnd = 100 - int(rand(100));
> > }
> > といった感じにするというのもある程度効き目があるのではないでしょうか。
うはっ、本家で出てたんですね(^^;
ほとんど見る様にはしてるんですが、見落としてたようです。
> 他にはsrandをやっている場合にその引数を適切な値に変えるということもやってみる価値はあります。(Webで探せばどういった値が良いのかヒントが見付かるかと思います。)
これはこれから色々と調べて見たいと思います。
> $rndや$stellatioの値をpush(@msg, 〜)で出力して確認してみては。
> 同じ値またはかなり近い値が連続したらプログラムの不備も考えられるということで。
あ、、、これは大ボケでした。 確かに表示させてみる、は基礎中の基礎だというのに....(^^;
まずは試すって基本を多少慣れが出たせいか失念しておりましたぁ。
返答頂いた事を元に調査等してしばらく頑張ってみようとおもいます、拙い事にお答え頂いて有難うございました。
また何かで詰まった際にはおじゃまさせて頂きますのでよろしくお願いします〜。