昨日、私はこの質問をしましたが、本当に満足できる答えが得られませんでした. Ruby などの関数型言語を使用して、スタイルが非常に命令的である必要なく、N 個の一意の乱数のリストを生成する方法を本当に知りたいです。
本当に気に入ったものが見つからなかったので、LINQ で探していたソリューションを作成しました。
static void Main(string[] args)
{
var temp = from q in GetRandomNumbers(100).Distinct().Take(5) select q;
}
private static IEnumerable GetRandomNumbers(int max)
{
Random r = new Random();
while (true)
{
yield return r.Next(max);
}
}
私の LINQ を Ruby に翻訳できますか? パイソン?他の関数型プログラミング言語はありますか?
注:ループや条件を使いすぎないようにしてください。そうしないと、解決策は簡単です。また、N よりもはるかに大きな配列を生成する必要がなく、重複を削除して N に切り詰めることができる解決策を見たいと思います。
私はうるさいことを知っていますが、この問題に対するいくつかのエレガントな解決策を見たいと思っています. ありがとう!
編集:
なぜすべてのマイナス投票なのですか?
もともと私のコード サンプルには、Take() の後に Distinct() があり、多くの人が指摘したように、空のリストが残る可能性がありました。そもそもの意図を反映するために、これらのメソッドが呼び出される順序を変更しました。
お詫び:
この投稿はかなり気取ったものだと言われてしまいました。LINQ が Ruby/Python よりも優れているとほのめかしているわけではありません。または、私の解決策が他の人の解決策よりもはるかに優れていること。私の意図は、Ruby で (特定の制約を使用して) これを行う方法を学ぶことです。ばかみたいに出くわしたらごめんなさい。