xからyまでの範囲でn個の固有番号を生成するプロシージャを記述する必要がありますか?重複は許可されません。 dbms_random.value(x、y)で乱数を生成できますが、値は繰り返されます。複写せずにpl/sqlで乱数を生成しますか?
答えて
最初にオフにしてください - 数字が重複なしで生成されなければならない場合、本当にランダムではありません。
これはクラス割り当てのように聞こえるので、私はコードを書くつもりはありません。ただし、次のような方法があります。
UNIQUE_NUMBERSという名前のUNIQUE_NUMBERという名前の1つのNUMBER型列を作成します。この列は一意に制約されています。あなたの関数では、数値を生成してからUNIQUE_NUMBERSに挿入します。それが正しく挿入されていれば、値は一意であり、関数は挿入をCOMMITしてその値を返すことができます。例外がある場合は、値が既に存在することを意味し、挿入されず、ループバックして別の番号をランダムに生成する必要があります。
幸運のベスト。
Upvote、特にteh codezを与えるだけではない。 –
CTEを使用して、xからyまでの数値を生成できます。そして、あなたはランダムに並べ替えることができます。
with n as (
select level as n
from dual
connect by level <= ("x" - "y" + 1)
),
rand_n as (
select n + "x" - 1
from n
order by dbms_random.random
)
select *
from rand_n;
これは、もちろん、「x」と「y」との違いは本当に巨大ではないことを前提としています。
??あなたは外側のクエリで、おそらく 'rownum <= n'のような制限フィルタを持つことを意味しましたか?書かれたクエリは 'x'と' y'の間のすべての数値を返します。 (また、OPが変数 'n'を持つのに役立つわけではなく、あなたはテーブルと列' n'の名前を選んだのです)。 – mathguy
1つの方法は、n
より多くの数値を生成することです(たとえば、10%増)。 n
の数字が1.1 * n
番以内にある確率はおそらく非常に低く、そのような状況になるまでの予想時間は太陽系の寿命よりも長い(n
がかなり小さい場合)。
次に、少なくともn
が区別されることを完全に期待する1.1 * n
の乱数を使用すると、別のを選択してrownum
でフィルタリングすることができます。
- 1. cstdlibを使用せずに乱数を生成する?
- 2. アプリケーションスウィフトをクラッシュさせずにループ乱数を生成2.2
- 3. 繰り返しを使わずに乱数を生成する
- 4. C++はループなしで複数の乱数を生成する
- 5. 複数のオブジェクトの乱数生成
- 6. 乱数生成器 - 毎回乱数を生成しない
- 7. 乱数を1から8まで反復せずに生成する方法はありますか?
- 8. どのようにC#で乱数を生成しますか?
- 9. MATLABで対数正規乱数を生成しますか?
- 10. 乱数onclickを生成し、生成された数値を数えますか?
- 11. 乱数生成
- 12. 乱数生成器は、重複
- 13. 重複のない乱数の生成
- 14. 複数のアプリケーションサーバーで18〜25サイズの乱数を生成する
- 15. Pythonで新しい乱数を生成していますか?
- 16. 擬似乱数乱数生成器で乱数列を生成する正しい方法
- 17. Cauchyから乱数生成
- 18. Python 3.4で重複した乱数のランダムなリストを生成
- 19. Javaで短い乱数を生成しますか?
- 20. Cで範囲[0、n)の乱数を生成しますか?
- 21. 2秒ごとに乱数を生成しますか? C++ Srand
- 22. Math.random()は一様に擬似乱数を生成しますか?
- 23. 列内の複数の行に異なる乱数を生成
- 24. Excelでの乱数生成
- 25. スパーク - 乱数生成
- 26. 乱数生成器
- 27. Javascript - 乱数生成
- 28. 乱数の生成
- 29. ATMega乱数生成
- 30. Goで同時に乱数を生成
nに上限を指定する必要があります。 nが大きすぎる場合、問題は解決されない可能性があります(マシンで表現できる数値の数は常に有限ですので、nがその数より大きい場合は解はありません)。 nがまだ非常に大きいが、第1の意味では「大きすぎる」ものではない場合、問題は解決可能であるが、9,000年の推定時間である。それでは、なぜPROCEDUREを書く必要がありますか?これはプレーンなSQLで行うことができます。 "手続き"は文字通り意味しますか?これはPL/SQLのクラス、または手続きですか?または、十分なプレーンなSQLソリューションですか? – mathguy