アプリ版:「スタンプのみでお礼する」機能のリリースについて

30個~50個以内の数字から10個ほど選んで、それらが何通りあり、その何通りかの全ての数字羅列を表示してくれるフリーソフトってありますか?
あるなら、どんなものか教えて欲しいです。

A 回答 (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万年以上はかかりそうだ。

自分でつくるか。
    • good
    • 0

SQLの使えるデータベースソフトならあてはまりそうです。

MySQLほかいろいろフリーウェアはあります。

同じデータからなる複数のテーブルを用意して、フィールド値が不一致のものを抽出するクエリを書けば済むでしょう。
    • good
    • 0

おそらくないでしょう。



「何通りあるか」だけならエクセルでcombin()(順序も区別するならpermut())を使えば出てくる。

「全ての数字羅列」は数が多すぎて大変です。30個から10個を選ぶだけでも三千万とおり以上あり、順番も区別するなら100兆とおり以上あります。表示したり記憶したりするだけでも大変です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!