如何解决使用php从0到1的随机浮点数列表?
我想创建一个函数来打印从 0 到 1 的 50 个随机浮点数的列表。
function random_from_0_to_1()
{
return (float)rand() / (float)getrandmax();
}
但是我如何得到一个包含 50 个数字的降序列表?
我想使用 usort()
函数,但我不确定如何将它与 50 个随机浮点数一起使用。
解决方法
生成一个浮点数组,用 sort()
排序,然后反转数组以降序排列。
所以,使用你的函数:
<?php
function random_from_0_to_1()
{
return (float)rand() / (float)getrandmax();
}
$arr = [];
for ($i=0;$i<50;$i++) {
$arr[] = random_from_0_to_1();
}
sort($arr); // sorts ascending
$arr = array_reverse($arr);
var_dump($arr);
输出:
array(50) {
[0]=>
float(0.9991139778863238)
[1]=>
float(0.9733540797482031)
[2]=>
float(0.9620095835821748)
[3]=>
float(0.9390542404442347)
[4]=>
float(0.9368096925023989)
[5]=>
float(0.9321818514411253)
[6]=>
float(0.9321091510039331)
...
[编辑]
由于您特别要求使用 usort()
的版本,请尝试使用 usort()
代替 sort()
和 array_reverse()
:
<?php
function random_from_0_to_1()
{
return (float)rand() / (float)getrandmax();
}
$arr = [];
for ($i=0;$i<50;$i++) {
$arr[] = random_from_0_to_1();
}
usort($arr,function($a,$b){return $b<=>$a;}); // Note parameters reversed in spaceship comparison
var_dump($arr);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。