Генерировать случайное число от 0,85 до 0,95 для каждой строки в SQL Server

Я хотел бы сгенерировать случайное число от 0,85 до 0,95 для каждой строки.

Сначала я пытался использовать (rand()*(0,85-0,95)+0,95), но для каждой строки генерировалось одно и то же число.

Мой запрос выглядит примерно так:

select
case when x=1 then (rand()*(0.85-0.95)+0.95) else 0
from abcd

Отвечает ли это на ваш вопрос? Как сгенерировать случайное число для каждой строки в выборке T-SQL?

Larnu 22.04.2022 18:58
dbfiddle.uk/…
Aaron Bertrand 22.04.2022 19:04
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
0
2
35
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Возможно, используйте NEWID для генерации случайных чисел; поскольку RAND() будет давать одинаковые значения для всех строк в таблице, поскольку начальное значение не меняется. Мы можем использовать NEWID, чтобы передать новые начальные значения для каждой строки и получить случайное число diff.

поэтому состояние вашего дела больше похоже на

 (RAND(CHECKSUM(NEWID()))*(0.85-0.95)+0.95)

рабочий пример

и ваш запрос, как

select
case when x=1 then (RAND(CHECKSUM(NEWID()))*(0.85-0.95)+0.95) else 0
from abcd
Ответ принят как подходящий

RAND() возвращает тот же номер для данного утверждения. Решением будет использование NEWID(). Что-то вроде:

CONVERT( DECIMAL(2, 2), .85 + (.95 - .85 )*RAND(CHECKSUM(NEWID())))

Скрипка здесь

Педантичность — приправа жизни. Я обновил его до заявления.

Edward Radcliffe 22.04.2022 19:11

Другие вопросы по теме