PHP教えてください!

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アッチラ

PHP教えてください!

#1

投稿記事 by アッチラ » 9年前

はじめまして、課題が解けず色々調べていたら行き着きました
C言語掲示板というのは承知して居ますが、皆様の力を貸して頂けたら嬉しいです!

内容はこんな感じです

1~100
までのランダムな数値を20個抽出し、
数字が大きな順番に並び変え出力するプログラムを書きなさい。
ただし、以下の条件を満たさなくてはいけません。
・20個の数値は重複してはいけない
・20個の内10個以上は51以上の数値でなければいけない
・20個の内5個以上は50以下の数値でなければいけない
・並び変えに標準関数(qsort・asort・ksortなど)を利用してはいけない

これをPHPにて解いているのですが、1~100の乱数を重複無く抽出し、
大きな順(に並べると言うところは出来ているのですが
10個以上の51以上及び5個以上の50以下の数値と言うのが
どう書いて良いのか分からず躓いています。
ちなみにですが並び替えはバブルソートで行っています。

力を貸してくれる方居ましたら、ソースコードをそのまま頂けるととても嬉しいです!
よろしくお願いします。

アバター
h2so5
副管理人
記事: 2212
登録日時: 13年前
住所: 東京
連絡を取る:

Re: PHP教えてください!

#2

投稿記事 by h2so5 » 9年前

そもそもランダムに抽出することと、51以上・50以下の数を選択的に抽出することは矛盾していると思うのですが。
条件を満たすまでランダムな抽出を繰り返すということなんでしょうか。

あと、宿題の丸投げは禁止です。

coco

Re: PHP教えてください!

#3

投稿記事 by coco » 9年前

乱数の最大値を51にして五回抽出
最大値は同じまま抽出した値に50足したものを10回
残りは最大値100で抽出してみたら如何でしょうか?

間違ってるかもしれません。

coco

Re: PHP教えてください!

#4

投稿記事 by coco » 9年前

すみません
二行目は最大値50で51足す
です

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: PHP教えてください!

#5

投稿記事 by みけCAT » 9年前

整数しか抽出しない場合は
1. 51以上100以下の数値を10個抽出する
2. 1以上50以下の数値を5個抽出する
3. 1以上100以下の数値で、1および2で抽出された数値以外のものを1個ずつ格納した配列を作る
4. 3で作った配列の中から数値を5個抽出する
でいいと思います。

実数を抽出する場合は、
1. 51以上100以下の数値を10個抽出する。これまでに出た数値と被ったら捨てて抽出し直す。
2. 1以上50以下の数値を5個抽出する。これまでに出た数値と被ったら捨てて抽出し直す。
3. 1以上100以下の数値を5個抽出する。これまで(1,2で出たものも含む)に出た数値と被ったら捨てて抽出し直す。
でいいと思います。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

“C言語何でも質問掲示板” へ戻る