php中给出一组数组,要求把这组数据打乱顺序后输出,而且不能重复!!请高手帮忙呀!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php中给出一组数组,要求把这组数据打乱顺序后输出,而且不能重复!!请高手帮忙呀!相关的知识,希望对你有一定的参考价值。
你要代码还是算法啊?我就直接说下大概算法好了
假设有个数组里面有10个数字
然后你来个循环,10个数字10次也差不多了
for($i=0;$i<10;$i++)
$a1=rand(0,9);//随机0到9的数字的
$a2=rand(0,9);
/*
*其实就是调换2个数字
*/
$j=$array[$a1];
$array[$a1]=$array[$a2];
$array[$a2]=$j;
循环十次,基本都打乱了,你的打乱没什么要求,所以这样应该符合要求了 参考技术A $arr = array('1','a','2','a','c','d');
$newArr = array_unique($arr);
shuffle($newArr);
echo '<pre>';
var_dump($newArr); 参考技术B 先用array_unique把数组中的重复值去除, 然后用shuffle函数打乱数组,最后输出 就可以了
随机打乱一组数(出题)
1 /* 2 打乱一组数据a[0]~a[n-1]: 3 给出0~n-1的编号,打乱这些编号,得到编号数组b[0]~b[n-1], 4 现在的数据为a[b[0]],a[b[1]],…,a[b[n-1]] 5 */ 6 #include <cstdio> 7 #include <cstdlib> 8 #include <cstring> 9 #include <cmath> 10 #include <string> 11 #include <set> 12 #include <map> 13 #include <list> 14 #include <queue> 15 #include <vector> 16 #include <algorithm> 17 using namespace std; 18 const long n=100; //1e6 19 const long max_int=1<<15;//long 1<<15 ; unsigned long 1<<16 20 const long X=n/max_int+(n%max_int!=0); 21 const long Y=n%max_int; 22 23 long a[n],x,y; 24 25 int main() 26 { 27 FILE* fp=fopen("data.txt","w"); 28 long i,j,index,t; 29 for (i=0;i<n;i++) 30 a[i]=i; 31 srand(0); 32 //每次确定a[i]的数值,index的数值是随机的,因而a[i]的数值也是随机的 33 //O(n) 34 for (i=n-1;i>=0;i--) 35 { 36 //分成两部分 v=max_int*x+y x=0..X-1 y=0..Y-1 37 index=floor(1.0*rand()/max_int*X) *max_int + floor(1.0*rand()/max_int*Y); 38 t=a[index]; 39 a[index]=a[i]; 40 a[i]=t; 41 } 42 for (i=0;i<n;i++) 43 fprintf(fp,"%ld ",a[i]); 44 fclose(fp); 45 return 0; 46 }
thanks for the help of a classmate
以上是关于php中给出一组数组,要求把这组数据打乱顺序后输出,而且不能重复!!请高手帮忙呀!的主要内容,如果未能解决你的问题,请参考以下文章