【发布时间】:2014-11-26 00:10:07
【问题描述】:
我正在尝试从字符串种子创建一个随机数,这是我尝试过的:
<?
function rand_n( $text )
{
return fmod( hexdec( md5( $text ) ), 1000 ) + 1000;
}
for( $i=0; $i<=250; $i++ ) {
$n = rand_n( "test$i" );
$a[] = $n;
echo $n . "\n";
}
echo "Total: " . count( $a ) . "\n";
$a = array_unique( $a );
echo "Unique: " . count( $a ) . "\n";
这有点工作,但它给了我很多重复。我尝试了其他方法,但他们给了我巨大的数字,我想将它保持在 4 或 5 数字结果。我知道使用 5 个字母可以生成比使用 5 个数字更独特的条目,但我的条目类似于 test0...250,它们不是那么随机。
如何使这个随机数生成器根据字符串种子返回唯一值,并将结果的长度保持在 4 或 5?
【问题讨论】:
-
听起来你根本不想要随机数......你想要一个产生小整数的字符串的哈希函数。我会使用 FNV 之类的东西。