случайное Десятичное число в Python

Я думаю, вам следует попробовать следующее:

“[doc['request.keyword'].value + ' ' + doc['user.keyword']].value”

Это вычислит хэши поля, которые будут объединенной строкой из двух значений - запроса и пользователя

Caveat. - это будет значительным ударом по производительности, так как он вычисляет и извлекает значения полей на лету

Одной из возможностей избежать этого будет изменение процесса индексации для создания этого синтетического поля, являющегося конкатенацией, поэтому позже Вы можете использовать обычное агрегирование кардинальности, а не сценарий.

12
задан Mark Dickinson 27 February 2018 в 16:43
поделиться

4 ответа

Что "случайное является десятичным"? Десятичные числа имеют произвольную точность, таким образом генерируя число с такой случайностью, как можно держать в Десятичном числе, взял бы всю память машины для хранения.

Необходимо знать, сколько десятичных цифр точности Вы хотите в своем случайном числе, в которой точке легко просто захватить случайное целое число и разделить его. Например, если Вы хотите две цифры выше точки и две цифры в части (см. randrange здесь):

decimal.Decimal(random.randrange(10000))/100
28
ответ дан 2 December 2019 в 03:01
поделиться

Из стандартного справочного руководства по библиотеке:

Для создания Десятичного числа из плавания сначала преобразуйте его в строку. Это служит явным напоминанием деталей преобразования (включая ошибку представления).

>>> import random, decimal
>>> decimal.Decimal(str(random.random()))
Decimal('0.467474014342')

Это то, что Вы имеете в виду? Это не походит на лаваш мне. Можно масштабировать его в любой диапазон и точность, которую Вы хотите.

16
ответ дан 2 December 2019 в 03:01
поделиться

Если Вы знаете, сколько цифр Вы хотите, после и перед запятой, можно использовать:

>>> import decimal
>>> import random
>>> def gen_random_decimal(i,d):
...  return decimal.Decimal('%d.%d' % (random.randint(0,i),random.randint(0,d)))

...
>>> gen_random_decimal(9999,999999) #4 digits before, 6 after
Decimal('4262.786648')
>>> gen_random_decimal(9999,999999)
Decimal('8623.79391')
>>> gen_random_decimal(9999,999999)
Decimal('7706.492775')
>>> gen_random_decimal(99999999999,999999999999) #11 digits before, 12 after
Decimal('35018421976.794013996282')
>>>
8
ответ дан 2 December 2019 в 03:01
поделиться

Случайный модуль имеет больше для предложения, чем "только возвращающиеся плавания", но так или иначе:

from random import random
from decimal import Decimal
randdecimal = lambda: Decimal("%f" % random.random())

Или я пропускал что-то очевидное в Вашем вопросе?

2
ответ дан 2 December 2019 в 03:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: