如何从文本中获取随机数?
function text_to_number($text, $min, $max)
{
....
mt_rand($min, $max);
....
return $random_number;
}
$rand1 = text_to_number("text1", 1, 1000);
$rand2 = text_to_number("text2", 1, 1000);
Run Code Online (Sandbox Code Playgroud)
所以"text1"总是返回476(例如)in mt_rand(1, 1000),而"text2" - 总是241.
是否可能?
我会说忘记"随机",听起来你真正想要的是某种形式的哈希.这是一个简单的实现,它使用字符串的md5哈希值并使用模数将其缩放到所需的范围内.
function text_to_number($text, $min = 0, $max = 1000)
{
return fmod(hexdec(md5($text)), ($max - $min)) + $min;
}
Run Code Online (Sandbox Code Playgroud)
你想要做的是根据你的字符串为随机生成器提供值.看,代码
mt_srand(5);
$value = mt_rand(1, 10);
Run Code Online (Sandbox Code Playgroud)
$value无论您调用多少次,都会始终为其分配相同的值.更好的是,对mt_rand的所有其他调用将从一次运行到另一次运行一致地返回相同的值(彼此不同),但您不应该关心它.
所以,你必须写
function make_seed($text) {
//do seed calc
return $seed;
}
function text_to_number($text, $min, $max) {
mt_srand(make_seed($text));
return mt_rand($min, $max);
}
Run Code Online (Sandbox Code Playgroud)
如何根据文本计算种子是另一个问题.您可以将每个char转换为整数并对它们求和.你可以计算CRC32.您可以制作MD5并参与其中.这里有很多选择.
但实际上,为什么不直接使用某种CRC或MD5?