将一个数组随机打乱

 public int []  shuffle(int [] arr) {
      int [] arr2 =new int[arr.length];
      int count = arr.length;
      int cbRandCount = 0;// 索引
      int cbPosition = 0;// 位置
      int k =0;
      do {
       Random rand = new Random();
       int r = count - cbRandCount;
       cbPosition = rand.nextInt(r);
       arr2[k++] = arr[cbPosition];
       cbRandCount++;
       arr[cbPosition] = arr[r - 1];// 将最后一位数值赋值给已经被使用的cbPosition
      } while (cbRandCount < count);
      return arr2;
     }
时间: 2024-11-10 01:18:36

将一个数组随机打乱的相关文章

给数组随机打乱

var data = obj.data;//获取数组 function randomsort(a, b) { return Math.random()>.5 ? -1 : 1; //用Math.random()函数生成0~1之间的随机数与0.5比较,返回-1或1} var pieData= data.proportion.sort(randomsort);//数组sort方法,返回1 换位置,返回-1不换位置

php保留键随机打乱数组顺序

最近遇到一个需求,把一个数组随机打乱顺序,我们可以用php的shuffle函数,但是这个函数会把数组的键清空建立新的键,那么我们若想保留键只需要利用shuffle函数再做一下处理就可以了.可以自定义一个函数. <?php function retain_key_shuffle(array &$arr){ if (!empty($arr)) { $key = array_keys($arr); shuffle($key); foreach ($key as $value) { $arr2[$v

简单说说随机打乱数组的方法

原文链接:http://www.gbtags.com/gb/share/5646.htm 把一个数组随机打乱这个需求来源可能就是“洗牌”,所以我们常常称之为洗牌问题.这个问题实现并不复杂,有不少方法可以完成.与其他算法不同,洗牌问题不仅追求速度,还要求“洗得足够开”.今天只想写篇短的,只分享两种比较有代码性的洗牌方法.至于这些方法能不能真正将数组随机打乱,我们下次再讲. 方法一,随机排序法: function shuffle(array) { array.sort(function() { re

将一个数组进行随机再排列

这是我们的第一篇博文,也是我们在开发第一个app的时候遇到的一个比较有趣的算法,这种将一个数组重新进行随机排序的问题并不罕见,但是因为是初学者,所以在探讨这个算法的过程中也纠结了很久,当然最后的算法也是参考借鉴了且听风吟博主的一篇文章:http://wsjiang.iteye.com/blog/1775341,在此鸣谢! 问题的解决: 1.假设想要将2~7这6个数字随机排序成一个数组,这里我们设置min为该范围的最小值2,max为该范围的上线7,n为想要在这个范围中取出多少个数字组成一个数组,当

随机打乱数组元素

把数组内的元素随机打乱,重新进行排列  C#版: 1 public static void Shuffle<T>(T[] array) 2 { 3 Random random = new Random(); 4 5 for (int i = 0; i < 10; i++) 6 { 7 int idx = random.Next(i, 10); 8 9 //swap elements 10 T tmp = array[i]; 11 array[i] = array[idx]; 12 arr

数组 将一个数组的元素和另一个素组的元素相加,然后赋给第三个数组

    在20 - 40中去十个元素,赋给两个数组a,b,然后将它们的其中的十个元素相加,得到的结果赋给数组c.    int a[10] = {0},b[10] = {10},c[10]= {0};     for (int i = 0; i < 10; i++) {          a[i] = arc4random()%(40 - 20 +1) + 20;          b[i] = arc4random()%(40 - 20 +1) + 20;         c[i] = a[i

如何将一个数组中的元素插入另一个数组

如何将一个数组中的元素插入另一个数组:本章节直接给出一段将一个数组中元素插入另一个数组中的代码实例,直接套用就可以了.代码如下: var first = ['a','b','c']; var second = ['1','2','3']; var index = 1; second.unshift(index, 0); Array.prototype.splice.apply(first, second); 原文地址是:http://www.softwhy.com/forum.php?mod=v

随机打乱一组数据(算法)

最近一个项目的开发中遇到一个需求,有一组数1,2,3,4,5,6,7,8,0. 哈哈,如何将它随机打乱生成一个0-8的任意排列呢?比如生成0.6.1.2.3.4.5.7.8等等. 算法思路: 1.使用Arraylist存放这组数 2.随机生成Arraylist的下标值,根据下标值依次取出Arraylist值,直到Arraylist为空 哈哈,是不是很简单.......... 下面看代码: private static void genRandomData() { int data[] = { 1

将一个数组中的偶数放前面奇数放后面

问题 一个数组由若干个整数组成,现要求:将偶数放到前面,奇数放到后面,并输出数组. 解决(python) #coding:utf-8 is_odd_number = lambda data:(data%2!=0) def odd_even_sort(lst): """利用list conprehension""" tmp_list1 = [item for item in lst if is_odd_number(item)] tmp_list2