程序实现0到9十个数字中选四个不相同的数字随机排列的算法问题,求指教修改
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序实现0到9十个数字中选四个不相同的数字随机排列的算法问题,求指教修改相关的知识,希望对你有一定的参考价值。
程序如下:
<?php
$num1=9;
$arr[0]=rand(0,$num1);
for($a=1;$a<=3;$a++)
for($b=0;$b<$a;)
$c=rand(0,$num1);
if($arr[$b]!=$c)
$b=$b+1;
else
$b=0;
$arr[$a]=$c;
for($p=0;$p<=3;$p++)
echo $arr[$p];
?>
这个程序运行出来的结果数字中还是有重复的现象,请各位帮我找一下这个程序算法哪里出了问题,谢谢
不需要弄得这么复杂。
<?php$min = 0;
$max = 9;
$num = 4;
$baseArray = range($min,$max); //组成0-9的数组
shuffle($baseArray); //打乱数组
$output = array_slice($baseArray,0,$num); //截取前面4个字符作为结果
echo \'<pre>\';
print_r($output);
//End_php追问
我的程序牵涉到数据库的单独条目,要得到一个数组才行
追答@incNick 的程序用法说明
<?php$baseArray = range(3,9);
echo \'<pre>\';
echo \'原始数组:<br/>\';
print_r($baseArray);
echo \'<br/>\';
$array_keys = array_rand($baseArray, 4);
echo \'这里是key,不是值。<br/>\';
print_r($array_keys);
echo \'<br/>\';
echo \'这个才是随机结果。<br/>\';
foreach($array_keys as $key)
echo \'$baseArray[\'.$key.\'] = \'.$baseArray[$key].\'<br/>\';
/*
//下面是输出结果
原始数组:
Array
(
[0] => 3
[1] => 4
[2] => 5
[3] => 6
[4] => 7
[5] => 8
[6] => 9
)
这里是key,不是值。
Array
(
[0] => 0
[1] => 1
[2] => 2
[3] => 6
)
这个才是随机结果。
$baseArray[0] = 3
$baseArray[1] = 4
$baseArray[2] = 5
$baseArray[6] = 9
*/
?> 参考技术A 直接改掉吧,这句话就够了
print_r(array_rand(range(0,9), 4));追问
我的程序牵涉到数据库的单独条目,要得到一个数组才行
追答得到的就是数组,不然我就echo出来了
注意,array_rand返回的数组是键名,因此如果你的取值范围不是0-9的话还要进行调整。
用java实现取1-100之间的99个不重复的随机数 然后输出没有被取出的数字
package cn.kgc.springtest2.demo1.dao; import java.util.BitSet; /** * @author * @create 2019-08-02 17:46 **/ public class sss public static void main(String[] args) BitSet bs = new BitSet(100); for (int count = 0; count < 99;) int random = (int) (Math.random() * 100); if (!bs.get(random)) bs.set(random); count++; //输出没有被取出的数字 System.out.println(bs.nextClearBit(0)); System.out.println(); for (int i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) //输出不重复的随机数 System.out.print(i + " ");
以上是关于程序实现0到9十个数字中选四个不相同的数字随机排列的算法问题,求指教修改的主要内容,如果未能解决你的问题,请参考以下文章
python 有四个数字:1234,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析:可填在百位十位个位的数字都是1234。组成所有的排列后再去 掉不满足条件的排列。(用