HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2019
0707
koutaxorshift32を再現したが0に収束する3解決


kouta

リンク

2019/7/7(Sun) 11:04:47|NO.87826

タイトルの通りです。独学で調べて優良パラメータにしているはずなのですがどういうわけかすぐに0に収束してしまいます。
間違っている部分がわからないので教えてほしいです。

#include "hspmath.as" shift=0 ;シフト回数 seed=654514674 seed_1=0 *main shift=13 gosub *leftshift mes seed shift=17 gosub *rightshift mes seed shift=15 gosub *leftshift mes seed wait 1 goto *main *leftshift seed_1=seed<<shift ;左に算術シフト a=(seed>>(32-shift))&(%01111111111111111111111111111111>>(32-shift-1)) ;はみ出たビットを抽出して右に寄せる seed_1=seed_1^a ;算術シフト結果とはみ出たビットを合成 seed=seed^seed_1 ;xorで合成 return *rightshift seed_1=seed>>shift ;右に算術シフト(符号のコピーが発生) seed_1=seed_1&(%01111111111111111111111111111111>>(shift-1)) ;余分な符号のコピーを消去 seed_1=seed_1^(seed<<(32-shift)) ;はみ出したビットを補完 seed=seed^seed_1 ;xorで合成 return



この記事に返信する


kouta

リンク

2019/7/7(Sun) 11:14:47|NO.87827

書き忘れたのですがこのままだと収束するのが画面外になるのでscreenとかでウィンドウの高さを広げてください。



沢渡

リンク

2019/7/7(Sun) 13:24:42|NO.87828

私の調べた限り、xorshiftははみ出したビットが捨てられることも考慮に入れた上で
設計されているようなので、はみ出したビットの補完は不要なのではないでしょうか。
参考:https://ja.wikipedia.org/wiki/Xorshift
http://d.hatena.ne.jp/tsukaban/20130727/p1

shift=0 ;シフト回数 seed=654514674 seed_1=0 repeat 200 shift=13 gosub *leftshift shift=17 gosub *rightshift shift=5 gosub *leftshift if cnt>=190 : mes seed //最後の10個のみ表示 loop stop *leftshift seed_1=seed<<shift ;左に算術シフト(論理シフトと同じ) seed=seed^seed_1 ;xorで合成 return *rightshift seed_1=seed>>shift ;右に算術シフト(符号のコピーが発生) seed_1=seed_1&(%01111111111111111111111111111111>>(shift-1)) ;余分な符号のコピーを消去 seed=seed^seed_1 ;xorで合成 return



kouta

リンク

2019/7/7(Sun) 14:27:15|NO.87829

沢渡さんの言う通りでした!無事完成しました!
沢渡さんありがとうございます!



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.87826への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

解決したら質問者本人がここをチェックしてください。

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

ONION software Copyright 1997-2018(c) All rights reserved.