プログラミングのアルゴリズムに詳しい人に聞きたいけどこれで合ってる?

■ このスレッドは過去ログ倉庫に格納されています
0001以下、5ちゃんねるからVIPがお送りします2024/02/02(金) 20:16:50.878ID:OggpiNTg00202
https://i.imgur.com/lZkjzYA.jpg

フィッシャー−イェーツのシャッフルのアルゴリズムをWikipediaの説明を見てPHPでコーディングしたのだけど…

画像は無駄にmb_strlen使っているけど引数で与えられる文字列は1バイト文字のみ文字列です

0002以下、5ちゃんねるからVIPがお送りします2024/02/02(金) 20:18:28.947ID:GHH7BUXM00202
直撮りって

0003以下、5ちゃんねるからVIPがお送りします2024/02/02(金) 20:19:20.240ID:OggpiNTg00202
>>2
その方が早かったからね…

0004以下、5ちゃんねるからVIPがお送りします2024/02/02(金) 20:20:52.175ID:OggpiNTg00202
誰か詳しい人いない?

0005以下、5ちゃんねるからVIPがお送りします2024/02/02(金) 20:21:30.887ID:RmMshxME00202
できるのかも知れんけど配列と文字列扱いが危なく見える

0006以下、5ちゃんねるからVIPがお送りします2024/02/02(金) 20:22:16.304ID:RmMshxME00202
mb_substrとconcatとかのほうがいいんじゃない?

0007以下、5ちゃんねるからVIPがお送りします2024/02/02(金) 20:24:10.396ID:OggpiNTg00202
>>5
とりあえず絶対に渡す文字列が1バイト文字のみだからこれでやったけど入れ替えはやっぱり文字列扱う関数使ってしっかりやった方が良いか…

フィッシャー−イェーツのシャッフルのアルゴリズムの実装はこれで合ってますか?

0008以下、5ちゃんねるからVIPがお送りします2024/02/02(金) 20:26:02.504ID:OggpiNTg00202
>>6
PHPの公式ドキュメント呼んでマルチバイト文字列でも安全に正しく交換してシャッフルできるように修整します!

0009以下、5ちゃんねるからVIPがお送りします2024/02/02(金) 20:27:02.074ID:OggpiNTg00202
フィッシャー−イェーツのシャッフルのアルゴリズムはこれで正しく実装できてますかね?

0010以下、5ちゃんねるからVIPがお送りします2024/02/02(金) 20:27:02.026ID:RmMshxME00202
>>7
最初の文字は変わらなくないこれ?

0011以下、5ちゃんねるからVIPがお送りします2024/02/02(金) 20:27:59.431ID:CVYS4ZIK00202
フィッシャーーイェッツってのがわかんね

0012以下、5ちゃんねるからVIPがお送りします2024/02/02(金) 20:28:05.778ID:55dVKNBwr0202
実行してみれば良くね
あってたら正しく動作するし間違えてたらわかるだろ

0013以下、5ちゃんねるからVIPがお送りします2024/02/02(金) 20:29:51.369ID:OggpiNTg00202
>>10
何度か実行してみましたが最初の文字も最後の文字も変わるので変わらないってことはないような…

もう一度トレースしてみます

0014以下、5ちゃんねるからVIPがお送りします2024/02/02(金) 20:30:26.965ID:RmMshxME00202
>>13
ああごめんいいんだ

0015以下、5ちゃんねるからVIPがお送りします2024/02/02(金) 20:30:52.466ID:OggpiNTg00202
>>12
パット見はうまくいっているように見えるけど本当に正しく実装できているか不安で…

0016以下、5ちゃんねるからVIPがお送りします2024/02/02(金) 20:37:24.542ID:OggpiNTg00202

0017以下、5ちゃんねるからVIPがお送りします2024/02/02(金) 20:57:03.287ID:k9uQ0KJTd0202
そのwikiで言うところの
消されてない数字の順を変えてしまうのと
後ろから埋まっていくのが違うな

それで良いなら良いのでは

0018以下、5ちゃんねるからVIPがお送りします2024/02/02(金) 21:12:00.233ID:OggpiNTg00202
>>17
ごめん
【現在のアルゴリズム】の項目の例を見て実装したから【改良されたアルゴリズム】の方のアルゴリズムを作ってた…

そればらこの実装で合っているのだろうか?

0019以下、5ちゃんねるからVIPがお送りします2024/02/02(金) 21:12:32.832ID:OggpiNTg00202
>>18
そればら→それなら

■ このスレッドは過去ログ倉庫に格納されています