ホームページ > バックエンド開発 > PHPチュートリアル > 100 個の要素の配列から 50 個の一意の要素を迅速かつランダムに削除する方法

100 個の要素の配列から 50 個の一意の要素を迅速かつランダムに削除する方法

WBOY
リリース: 2016-06-23 13:31:46
オリジナル
3009 人が閲覧しました

100 個の要素の配列から 50 個の一意の要素をすばやくランダムに削除するにはどうすればよいですか?


ディスカッションへの返信 (解決策)

array_rand($a, 50);

次に、配列の重複を排除して、ランダムフェッチを呼び出します

次に、配列の重複を排除して、ランダムフェッチを呼び出します


たとえば、1 ~ 100 の値がサイズ 100 の配列に配置されている場合、50 個の非反復要素を迅速かつランダムに抽出するにはどうすればよいでしょうか。 49 時間目など、後でフェッチすると、すでにフェッチされているデータがフェッチされる可能性が依然として非常に高いと考えられますが、この問題を解決するにはどうすればよいでしょうか。

1階の正解はマニュアルを確認してください、array_rand

1階の正解はマニュアルを確認してください、array_rand

array_randはどのように実装されていますか?

次のように実装することもできます。

$num =0;$array = array(1,2,3,4,5,6,7,8,9);$arr =array();$g    = 5;$tag = true;while($tag){   $count = count($array);   $t = rand(0,1);    if($t==1){        $arr[] = $array[$num];        unset($array[$num]);    }   $num++;   if(count($arr)==$g){    $tag=false;   }   if($num == $count){     $num  = 0;   }}
ログイン後にコピー

空の配列を作成し、array_rand がランダムに 1 つを取り出して配列に追加し、2 番目の配列を取り出して、取り出したものが既に配列にあるかどうかの判断を開始します。 50 項目保存してループを終了します

function swap(&$a, &$b){    $temp = $b;    $b = $a;    $a = $temp;}$result = array();$src = array();for($i = 0 ; $i < 40 ; $i++){    $src[] = $i + 1;}$arr_len = count($src);$count = 20;$index = 0;while($index < $count){    $random = rand(0, $arr_len - $index - 1);    $result[] = $src[$random];    swap($src[$random] , $src[$arr_len - $index - 1]);    $index += 1;}print_r(json_encode($result));print_r(json_encode($src));
ログイン後にコピー


このように書いてみてはどうでしょうか

#1 言ったじゃないですか? 考えられる結果
3,5,6,7,10,12,13,15,16,19,20,23,30,31,33,35,37,38,39,44,46,49, 51 ,53,54,59,61,63,64,65,66,69,71,72,74,75,77,78,80,82,83,87,88,89,91,92,96,97 ,98,100

$arr = array(1,2,3,3,4,56,fdas,....);
$unique = array_unique($arr)
print_r(array_rand($unique,50 ); );

mixed array_rand ( array input [, int num_req] )


array_rand() は、配列から 1 つ以上のランダムなセルを取り出したい場合に非常に便利です。入力を入力配列として受け入れ、オプションのパラメーター num_req を使用して、削除するセルの数を指定します。指定しない場合、デフォルトは 1 です。

1 つだけを取り出す場合、array_rand() はランダムなユニットのキー名を返し、それ以外の場合はランダムなキー名を含む配列を返します。このようにして、配列からキーと値をランダムに取り出すことができます。

1. まず、array_unique を使用して一意の要素を取得します。
2. シャッフルを使用して順序を乱します
3. array_slice を使用して 50 個の要素を取得します。

例:
rree

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート