php 处理生成不重复随机数的问题解答
前提:
今天看到一个帖子,看到有人要生成一个数组,这个数组里面有10个元素,都是整形,并且是1-60之间不重复的随机数。
当然,这个题不难! 底下是论坛回复的解答。
代码:
<?php
function get_randoms($min,$max,$num){
$count = 0;
$res = array();
while($count<$num){
$res[] = mt_random($min,$max);
$res = array_flip(array_flip($res));
$count = count($res);
}
return $res;
}
$result = get_randoms(1,60,10);
?>
在这里 他用$count 结果数组的个数,他在while 循环中 使得结果数组的个数小于 目标个数。通过这样,获取到$count 是 目标个数 的一个数组。
期间,每一个循环中,通过mt_random($min,$max),随机出区间内的一个值,存放到数组$res中,然后通过两次key-value 交换,也就是通过数组key的唯一性,使得做到不重复。
我看了这个逻辑的代码之后,我不禁陷入了深思,假如说当你不知道array_filp 函数的时候你怎么做?
说白了就是用key的唯一性,使得随机数不会存在重复。那么我们能不能将这个问题简单化处理呢?
代码:
<?php
function get_randoms($min,$max,$num){
$count = 0;
$res = array();
while($count<$num){
$key = mt_random($min,$max);
$res[$key] = $key;
$count = count($res);
}
return $res;
}
$result = get_randoms(1,60,10);
?>
这样以来,我们完全是单独的通过数组key的唯一性 解决了这个问题。根本就不会用到array_flip。
通过上述,我提出两个观点。
一:因为php为我们提供了大量的内置函数,他们的执行效率都很高。 我们在遇到问题的时候,尽可能 的去用它去解决问题。这样方便而且快速。 所以,我们日常工作学习,尽可能的积累足够多的php函数,并且深刻的理解它们。
二: 虽然php 给我们提供了大量的内置函数,执行效率也很高,但是,我想指出,虽然效率高,还是需要时间去执行的。我们在遇到问题的时候,不要盲目的去做,可以先看清处理方法的本质,以便于我们去巧妙的实现他。
分享到:
相关推荐
在易语言中,生成不重复随机数是一项常见的需求,特别是在游戏开发、数据分析或者算法设计等场景。本文将深入探讨如何在易语言中实现取不重复随机数的功能。 首先,我们需要了解易语言中的随机数生成函数。在易语言...
根据提供的标题、描述以及部分代码内容,我们可以总结出在Visual Basic (简称VB)环境中生成不重复随机数的主要方法。此技术常用于各种场景,比如彩票系统、抽奖程序或需要无重复随机选择的应用。 ### 一、基本原理 ...
VBA生成不重复的随机数源码.txt
在编程领域,生成指定范围内的随机数而不重复是一项常见的需求,尤其在抽奖系统、密码生成或者数据模拟等场景。这个例子以Java语言为基础,提供了一种解决方案,可以在myEclipse集成开发环境中直接运行。下面我们将...
在VB.NET编程环境中,生成不重复的随机数是一项常见的需求,尤其在进行模拟、测试或者游戏开发时。这里我们将深入探讨如何实现这个功能,并提供一个详细的步骤解释。 首先,我们需要了解VB.NET中的Random类,它是...
在IT行业中,生成不重复的随机数是一项常见的需求,尤其在编程和数据分析任务中。"取不重复随机数.rar"这个文件可能包含了一个易语言(EasyLanguage)的程序或者示例,用于解决这个问题。易语言是一种简洁、直观的...
在“易语言取不重复随机数.rar”这个压缩包中,我们可以找到关于如何在易语言中生成不重复随机数的相关教程或源代码。 在编程中,生成随机数是一项常见的任务,特别是在游戏、模拟、加密等领域。而在易语言中,生成...
### 生成不重复随机数的算法 在许多应用领域中,比如在线考试系统、游戏开发或是数据处理等场景,生成不重复的随机数是一项非常重要的技术。本文将详细介绍几种不同的方法来实现这一功能,并通过具体的Java代码示例...
在.NET框架中,生成不重复的随机数是一个常见的需求,特别是在模拟、测试或者游戏开发等场景。本篇文章将深入探讨如何使用.NET实现这一功能,并提供一个VB.NET的示例代码。 首先,我们要明白生成随机数的基本原理。...
在Java编程中,生成十个不重复的随机数是一项常见的任务,尤其在进行数据模拟、测试或者游戏设计等场景。要实现这个功能,我们需要利用到Java的集合框架和Math类中的随机数生成方法。下面我们将详细讲解如何实现这个...
在IT领域,尤其是在编程语言C#中,生成不重复的随机数是一个常见且重要的需求,尤其是在游戏开发、安全系统、数据分析等应用场景中。本文将基于提供的文件内容,深入解析三种不同的方法来实现这一功能,旨在为读者...
巧用Java实现得到任意位永不重复的随机数,很经典的代码!
在编程领域,生成特定区间内的不重复随机数是一项常见的任务,尤其在模拟、游戏开发、数据分析等场景中。本文将详细探讨如何通过移位和逻辑运算实现这一目标,以达到高效且准确的效果。 首先,我们要明确一点:生成...
通过循环创建随机种子来循环生成随机数,避免了重复调用Random的Next方法产生重复随机数的问题,程序里可设置文件的保存路径和产生的随机数长度
Java生成32位随机数,短位随机数工具类
在“易语言源码易语言取不重复随机数.rar”这个压缩包中,我们关注的核心知识点是如何在易语言中生成不重复的随机数。 在易语言中,生成随机数通常使用“随机数发生器”命令,它位于“系统”类别下。该命令可以生成...
在VB.NET编程环境中,生成1-10之间不重复的随机数是一项常见的需求,这可能在各种场景下用到,比如模拟抽奖、游戏设计或数据分析等。为了实现这个功能,我们需要掌握VB.NET中的随机数生成器类以及数组或集合数据结构...
为了确保生成的随机数在一定范围内不重复,我们通常需要借助数据结构来辅助存储已经生成过的随机数,并在每次生成新的随机数前检查该数是否已经被使用过。这里提供了一种基于`ArrayList`的实现方法: ```csharp ...
在编程领域,生成1到N的不重复随机数是一个常见的需求,这在各种场景中都有应用,例如模拟抽奖、创建随机测试数据或者在游戏中分配资源等。这个任务涉及到两个主要的知识点:随机数生成和数组去重。 首先,我们来...
java生成16位随机数