アルゴリズムに関する小さな問題
たとえば、数値が 13 であることがわかっています。次に、0 ~ 9 の 10 個の数値からランダムに 3 つの数値を選択する必要があります。たとえば、次のようになります。 5+5+3 または 3+5+5 または 5+3+5 のいずれかになります。 6+2+5 は繰り返すことができ、ポジションの順序は固定されません。
PHP での実装方法。
ディスカッション(解決策)への返信
そこから最終的な値の要件は、3 つの数値すべてをランダムにすることはできないということです。ランダムにできるのは最大でも 1 つの数値だけであり、残りの数値は残りの値の範囲
$num = 13;$a = array_merge(range(0, 9), range(0, 9), range(0, 9));$loop = 10;while($loop--) { shuffle($a); foreach(array_chunk($a, 3) as $v) if(array_sum($v) == $num) echo join(' + ', $v), PHP_EOL;}
8 + 2 + 32 + 7 + 49 + 1 + 32 + 6 + 50 + 4 + 92 + 7 + 44 + 8 + 15 + 8 + 08 + 4 + 19 + 0 + 4
$num = 13;$a = array_merge(range(0, 9), range(0, 9), range(0, 9));$loop = 10;while($loop--) { shuffle($a); foreach(array_chunk($a, 3) as $v) if(array_sum($v) == $num) echo join(' + ', $v), PHP_EOL;}
8 + 2 + 32 + 7 + 49 + 1 + 32 + 6 + 50 + 4 + 92 + 7 + 44 + 8 + 15 + 8 + 08 + 4 + 19 + 0 + 4
元の投稿者は次のように述べています:
は繰り返すことができ、位置の順序は固定されていません
$num = 13;$a = array_merge(range(0, 9), range(0, 9), range(0, 9));$loop = 10;while($loop--) { shuffle($a); foreach(array_chunk($a, 3) as $v) if(array_sum($v) == $num) echo join(' + ', $v), PHP_EOL;}
8 + 2 + 32 + 7 + 49 + 1 + 32 + 6 + 50 + 4 + 92 + 7 + 44 + 8 + 15 + 8 + 08 + 4 + 19 + 0 + 4
$num = 13;$a = array_merge(range(0, 9), range(0, 9), range(0, 9));$loop = 10;while($loop--) { shuffle($a); foreach(array_chunk($a, 3) as $v) if(array_sum($v) == $num) echo join(' + ', $v), PHP_EOL;}
8 + 2 + 32 + 7 + 49 + 1 + 32 + 6 + 50 + 4 + 92 + 7 + 44 + 8 + 15 + 8 + 08 + 4 + 19 + 0 + 4
投稿者は次のように述べています:
は繰り返すことができ、位置の順序は固定されていません
$num = 13;$a = array_merge(range(0, 9), range(0, 9), range(0, 9));$loop = 10;while($loop--) { shuffle($a); foreach(array_chunk($a, 3) as $v) if(array_sum($v) == $num) echo join(' + ', $v), PHP_EOL;}
8 + 2 + 32 + 7 + 49 + 1 + 32 + 6 + 50 + 4 + 92 + 7 + 44 + 8 + 15 + 8 + 08 + 4 + 19 + 0 + 4
$num = 13;$a = array_merge(range(0, 9), range(0, 9), range(0, 9));$loop = 10;while($loop--) { shuffle($a); foreach(array_chunk($a, 3) as $v) if(array_sum($v) == $num) echo join(' + ', $v), PHP_EOL;}
8 + 2 + 32 + 7 + 49 + 1 + 32 + 6 + 50 + 4 + 92 + 7 + 44 + 8 + 15 + 8 + 08 + 4 + 19 + 0 + 4
---------------------- --- -----
繰り返しなく書くには?よく考えたら、気づかなかった
$num = 13;$a = array_merge(range(0, 9), range(0, 9), range(0, 9));$loop = 10;while($loop--) { shuffle($a); foreach(array_chunk($a, 3) as $v) if(array_sum($v) == $num) echo join(' + ', $v), PHP_EOL;}
8 + 2 + 32 + 7 + 49 + 1 + 32 + 6 + 50 + 4 + 92 + 7 + 44 + 8 + 15 + 8 + 08 + 4 + 19 + 0 + 4
============== ===== ==
<?php $sum = 13; for($a=0; $a<10; $a++){ for($b=0; $b<10; $b++){ $c = $sum-$a-$b; if($c<10 && $c>0){ echo $a.' + '.$b.' + '.$c,PHP_EOL; } } } ?>
実際、ニーズを明確に説明していません:
ランダムな結果だけが必要ですか?それともすべての可能性をリストアップしますか?それとも他の特定の結果ですか?
3 つの数字は繰り返し出現できます
function number($num){ if( $num == 0 ) return array(0, 0, 0); if( $num == 27 ) return array(9, 9, 9); $data = array(); $oneMax = ( $num > 10 ) ? 9 : $num; $oneMin = ($num > 18) ? ($num - 18) : 0; $data[0] = rand($oneMin, $oneMax); $twoMax = ( ($num - $data[0]) > 9 ) ? 9 : ($num - $data[0]); $twoMin = ( ($num - $data[0]) > 9 ) ? ($num - $data[0] - 9) : 0; $data[1] = rand($twoMin, $twoMax); $data[2] = $num - $data[0] - $data[1]; return $data;}
私は自分で書いたのでコメントしてください。欠陥はありますか?
使い切ってからランダムに選択してください
必要なのはランダムな組み合わせだけです
。以下のように:
$sum = 13;//要求的和,不能超过27 $result = array(rand(0,9));//第一个随机数,下面是第二个随机数,要控制范围,否则第三个数可能就不在范围内 if($result[0]<$sum-9) $result[] = rand($sum-9-$result[0],9); else $result[] = rand(0,$sum-$result[0]); $result[] = $sum-array_sum($result);//和减去已经生成的两个随机数,就是第三个数。 var_dump($result);
echo number(13);function number($num) { $r[] = rand(1, 9); $r[] = rand(1, min(9, $num - $r[0])); $r[] = $num - $r[0] - $r[1]; return join('+', $r);}

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











多くの場合、キーワードと追跡パラメーターで散らかった長いURLは、訪問者を阻止できます。 URL短縮スクリプトはソリューションを提供し、ソーシャルメディアやその他のプラットフォームに最適な簡潔なリンクを作成します。 これらのスクリプトは、個々のWebサイトにとって価値があります

2012年のFacebookによる有名な買収に続いて、Instagramはサードパーティの使用のために2セットのAPIを採用しました。これらはInstagramグラフAPIとInstagram Basic Display APIです。

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

これは、LaravelバックエンドとのReactアプリケーションの構築に関するシリーズの2番目と最終部分です。シリーズの最初の部分では、基本的な製品上場アプリケーションのためにLaravelを使用してRESTFUL APIを作成しました。このチュートリアルでは、開発者になります

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

2025 PHP Landscape Surveyは、現在のPHP開発動向を調査しています。 開発者や企業に洞察を提供することを目的とした、フレームワークの使用、展開方法、および課題を調査します。 この調査では、現代のPHP Versioの成長が予想されています
