検索
ホームページバックエンド開発PHPチュートリアルPHP は n 個の非反復ランダム整数を生成します

PHP は n 個の非繰り返しランダム整数を生成します

特定の整数範囲で n 個の非繰り返しランダム整数を生成する必要があります。具体的に機能をどう設計するか?

乱数を配列に保存し、配列内の重複する値を削除して、一定数の非反復乱数を生成します。

n 個の非反復ランダム整数を生成する PHP の実装コードは次のとおりです。

<?php<br />/*<br />* array unique_rand( int $min, int $max, int $num )<br />* 生成一定数量的不重复随机整数<br />* $min 和 $max: 指定随机数的范围<br />* $num: 指定生成数量<br />*/<br />function unique_rand($min, $max, $num) {<br />    $count = 0;<br />    $return = array();<br />    while ($count < $num) {<br />        $return[] = mt_rand($min, $max);<br />        $return = array_flip(array_flip($return));<br />        $count = count($return);<br />    }<br />    shuffle($return);<br />    return $return;<br />}<br /><br />$arr = unique_rand(1, 25, 16);<br />sort($arr);<br /><br />$result = '';<br />for($i=0; $i < count($arr);$i++)<br />{<br />	$result .= $arr[$i].',';<br />}<br />$result = substr($result, 0, -1);<br />echo $result;<br />?>


注:

1 の場合に使用されます。乱数を生成する mt_rand() 関数。この関数は、rand() よりも平均して 4 倍の速度で乱数を生成します。

2. 配列から重複する値を削除する場合は、array_flip()を使って配列のキーと値を2回交換する「flipメソッド」が使用されます。このアプローチは、array_unique() を使用するよりもはるかに高速です。

3. 配列を返す前に、shuffle() を使用して新しいキー名を配列に割り当て、キー名が 0 から n までの連続した番号であることを確認します。この手順を実行しないと、重複した値を削除するときにキー名が不連続になり、トラバーサルに問題が発生する可能性があります。


声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
如何解决 golang 中的 “undefined: rand.Seed” 错误?如何解决 golang 中的 “undefined: rand.Seed” 错误?Jun 25, 2023 am 08:34 AM

在使用Golang进行开发或学习过程中,我们可能会遇到undefined:rand.Seed的错误提示。这个错误通常会在需要使用随机数生成器时出现,因为在Golang中需要先设置一个随机数种子,才能使用rand包中的函数。本篇文章将介绍如何解决这种错误。1.引入math/rand包首先,我们需要在代码中引入math/rand包。在

C语言return的用法详解C语言return的用法详解Oct 07, 2023 am 10:58 AM

C语言return的用法有:1、对于返回值类型为void的函数,可以使用return语句来提前结束函数的执行;2、对于返回值类型不为void的函数,return语句的作用是将函数的执行结果返回给调用者;3、提前结束函数的执行,在函数内部,我们可以使用return语句来提前结束函数的执行,即使函数并没有返回值。

counta和count的区别counta和count的区别Nov 20, 2023 am 10:01 AM

Count函数用于计算指定范围内数字的个数。它忽略文本、逻辑值和空值,但会将空单元格计算在内,Count函数只计算包含实际数字的单元格数量。而CountA函数用于计算指定范围内非空单元格的个数。它不仅计算包含实际数字的单元格,还计算包含文本、逻辑值和公式等非空单元格的数量。

Java中return和finally语句的执行顺序是怎样的?Java中return和finally语句的执行顺序是怎样的?Apr 25, 2023 pm 07:55 PM

源码:publicclassReturnFinallyDemo{publicstaticvoidmain(String[]args){System.out.println(case1());}publicstaticintcase1(){intx;try{x=1;returnx;}finally{x=3;}}}#输出上述代码的输出可以简单地得出结论:return在finally之前执行,我们来看下字节码层面上发生了什么事情。下面截取case1方法的部分字节码,并且对照源码,将每个指令的含义注释在

使用C#中的Array.Sort函数对数组进行排序使用C#中的Array.Sort函数对数组进行排序Nov 18, 2023 am 10:37 AM

标题:C#中使用Array.Sort函数对数组进行排序的示例正文:在C#中,数组是一种常用的数据结构,经常需要对数组进行排序操作。C#提供了Array类,其中有Sort方法可以方便地对数组进行排序。本文将演示如何使用C#中的Array.Sort函数对数组进行排序,并提供具体的代码示例。首先,我们需要了解一下Array.Sort函数的基本用法。Array.So

简单明了的PHP array_merge_recursive()函数使用方法简单明了的PHP array_merge_recursive()函数使用方法Jun 27, 2023 pm 01:48 PM

在进行PHP编程时,我们常常需要对数组进行合并。PHP提供了array_merge()函数来完成数组合并的工作,不过当数组中存在相同的键时,该函数会覆盖原有的值。为了解决这个问题,PHP在语言中还提供了一个array_merge_recursive()函数,该函数可以合并数组并保留相同键的值,使得程序的设计变得更加灵活。array_merge

如何在 Golang 并行处理中同步随机数生成?如何在 Golang 并行处理中同步随机数生成?Jun 03, 2024 pm 02:53 PM

在Go并发编程中同步随机数生成:使用互斥锁(sync.Mutex)控制对rand.Rand随机数生成器的访问。每个goroutine在生成随机数前获取互斥锁,并在生成后释放互斥锁。这确保了同一时间只有一个goroutine可以访问随机数生成器,消除了数据争用。

php rand函数生成相同随机数怎么解决php rand函数生成相同随机数怎么解决Mar 23, 2023 am 09:17 AM

rand()函数在每次调用时使用相同的初始种子(seeds)。预设的初始种子是从操作系统的时间获得的,但是它只有微秒级的精度。也就是说,在极短的时间内,许多rand()函数调用都将使用相同的初始种子,从而导致相同的随机数生成。那么,如何解决这个问题呢?

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター