前提・実現したいこと
PHPで$a(8桁から19桁の数字)と$b(2桁以下の数字)のパラメーターを使用して、7桁の英数字のランダムな文字列を生成したいです。
元々$aの値が最大9桁の数字で、以下のプログラムでできていたのですが、最大19桁に増えてしまったため、同じ文字列が生成されるようになってしまいました。
みなさまのご回答から7桁では無理だということが分かったので12桁に増やすことを検討中です。
その場合のシードの設定方法で良い案があればご教授ねがいます。
追記
$a apiから取得しているユーザーごとに違う数値
$b 使った日数
になります。
発生している問題
srand((float)$a* 10000 + $b);
桁数が大きくなってしまった時、↑の部分により種が同じになってしまっているのが問題なのは分かるのですが、いい解決方法が思い浮かびません…
何か良い方法があればご教授願います。
修正したソースコード
//$aは8桁から19桁の数字。 //$bは2桁以下の数字。 //数値のexample $a =99999999; //うまくいっていた $a =9999999999999999999; //桁数が増えたことによりうまくいかない $b =23; //2桁以下の数字 srand((float)$a* 10000 + $b); $val = ''; for ($i = 0; $i <= 11; $i++) { $rnd = rand(0, 61); if ($rnd <= 9) { $rnd += 48; } else if($rnd <= 35) { $rnd += 55; } else { $rnd += 61; } $val .= chr($rnd); } return $val; var_dump($val);
追記
ご回答ありがとうございます。
今のままでは難しいことが分かり英数字を7桁から12桁に増やすことにしました。
それからその場合シードをどう設定したら良いと思いますか。
本当に初心者で全然分かっておらずすみません。
回答2件
あなたの回答
tips
プレビュー