powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Неожиданное поведение RAND()
6 сообщений из 6, страница 1 из 1
Неожиданное поведение RAND()
    #35678902
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
update command options using c off
DB20000I  The UPDATE COMMAND OPTIONS command completed successfully.

create table x( rand_value int )
DB20000I  The SQL command completed successfully.

insert into x with tmp (id) as ( values  1  union all select id+ 1  from tmp where id< 1000000  ) select (rand()* 500000 ) from tmp
DB20000I  The SQL command completed successfully.

select count(distinct rand_value) from x

 1 
-----------
       32768 

   1  record(s) selected.


rollback
DB20000I  The SQL command completed successfully.
...
Рейтинг: 0 / 0
Неожиданное поведение RAND()
    #35678906
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выходит умножать на более чем 32768 бесполезно.
Выкрутился используя (rand()*32768+rand()*32768+rand()*32768 .... )
прикольно, правда?
...
Рейтинг: 0 / 0
Неожиданное поведение RAND()
    #35678967
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще можно проще - rand()*rand() :)
...
Рейтинг: 0 / 0
Неожиданное поведение RAND()
    #35678982
gardenmanВыходит умножать на более чем 32768 бесполезно.
Выкрутился используя (rand()*32768+rand()*32768+rand()*32768 .... )
прикольно, правда?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
Database server        = DB2/NT  9 . 1 . 4 

db2 "select rand()*50000 from sysibm.sysdummy1"

 1 
------------------------
  + 2 ,20862453077792E+ 004 

   1  record(s) selected.

db2 "select rand()*50000.0 from sysibm.sysdummy1"

 1 
------------------------
  + 2 ,60719626453444E+ 004 

   1  record(s) selected.


db2 "select integer(rand()*50000) from sysibm.sysdummy1"

 1 
-----------
       45113 

   1  record(s) selected.


db2 "select integer(rand()*50000) from sysibm.sysdummy1"

 1 
-----------
        5320 

   1  record(s) selected.


db2 "select integer(rand()*50000) from sysibm.sysdummy1"

 1 
-----------
       45132 

   1  record(s) selected.
...
Рейтинг: 0 / 0
Неожиданное поведение RAND()
    #35679101
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gardenmanВыходит умножать на более чем 32768 бесполезно.
Выкрутился используя (rand()*32768+rand()*32768+rand()*32768 .... )
прикольно, правда?Ну, это факт известный - про rand.
Описан в поваренной книге.
Можно так:
Код: plaintext
1.
2.
with t(i) as (values  1  union all select i+ 1  from t where i< 500000 )
select count(distinct (current timestamp - current timezone - timestamp(generate_unique())))
from t
для генерации случайных чисел сделать...
...
Рейтинг: 0 / 0
Неожиданное поведение RAND()
    #35679758
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Евгений Хабаров

Фишка в том, что RAND() может сгенерировать только 32768 уникальных начений.
Потом все пойдет по кругу.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Неожиданное поведение RAND()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]