- ベストアンサー
30個~50個以内の数字から10個ほど選んで、それらが何通りあり、その
30個~50個以内の数字から10個ほど選んで、それらが何通りあり、その何通りかの全ての数字羅列を表示してくれるフリーソフトってありますか? あるなら、どんなものか教えて欲しいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
一般的にはフリーソフトでは無理。 30個~50個以内の数字というから,50個まで考えないといけない。それだと,1.03*10^10通りの組になる。うまく計算ができたとして,ディスプレイに出力するのにどれほどの時間がかかるか。毎秒1万個出力して,12日くらいかかりそうだ。もっと速く出力できるだろうか。30個~50個以内の数字のそれぞれの桁数の指定が無いので,Cなどのプログラムで扱う整数の10桁の数字まで扱うとすれば,1つの組合せは,100桁になる。これだとそんなに速くはできまい。また,これを文字列で扱うと,全部記憶装置に保持すれば,1TB以上必要になる。それくらいのHDDはいまどき珍しくも無いので,これは出来るが,これを読み書きするだけでも50時間くらいはかかるだろう。また,1つの組合せを得たら,すぐに出力して,記憶装置に保持しなければメモリだけで足りるだろうが,1度ディスプレイに表示するだけで,なくなってしまう。これを,印刷しておこうとすれば,軽く1000日は超えるだろうし,紙もA4で,1ページに100個出力すると,1億ページも必要になる。(任意精度演算なら,記憶装置容量はいくらか少なくなるかもしれないが,本質的には変わりない) せいぜい,最低の2桁までの数字を拾うだけとしても,似たようなものだろう。印刷は別にして,このくらいの量だと全くできないわけでもなさそうだが,ほとんど実用的ではないし,一般的でもない。非常に特殊な目的に使うものなら,ソフトとしての需要は少ないから,フリーソフトで公開する人がいるだろうか。 まして,順列を考えるなら,ディスプレイ出力で1万年,印刷では,100万年以上はかかりそうだ。 自分でつくるか。
その他の回答 (2)
SQLの使えるデータベースソフトならあてはまりそうです。MySQLほかいろいろフリーウェアはあります。 同じデータからなる複数のテーブルを用意して、フィールド値が不一致のものを抽出するクエリを書けば済むでしょう。
- girlkeeper
- ベストアンサー率45% (29/64)
おそらくないでしょう。 「何通りあるか」だけならエクセルでcombin()(順序も区別するならpermut())を使えば出てくる。 「全ての数字羅列」は数が多すぎて大変です。30個から10個を選ぶだけでも三千万とおり以上あり、順番も区別するなら100兆とおり以上あります。表示したり記憶したりするだけでも大変です。