добавьте System.Data.Linq.SqlClient в ваш список использования или импорта, затем попробуйте:
var results = from x в данных, где SqlMethods.Like (x.SearchField, "% something% например% this% ") выберите x;
Невозможно получить автоматическое семя обратно от генератора. Я обычно генерирую такие семена:
seed = random.randrange (sys.maxsize) rng = random.Random (seed) print («Seed was:», seed)
[ ! d3]Таким образом, это основано на времени, поэтому каждый раз, когда вы запускаете скрипт (вручную), он будет другим, но если вы используете несколько генераторов, у них не будет одного семестра просто потому, что они были созданы почти одновременно.
Поскольку никто не упомянул, что обычно наилучшая случайная выборка, которую вы могли бы получить на любом языке программирования, генерируется через операционную систему, я должен предоставить следующий код:
random_data = os.urandom ( [] D5] Источник: https: // www. quora.com/What-is-the-best-way-to-generate-random-seeds-in-python
со значением 8, похоже, создает вокруг того же количество цифр как sys.maxsize
для меня.
& gt; & gt; & gt; & gt; & gt; int.from_bytes (os.urandom (8), byteorder = "large") 17520563261454622261 & gt; & gt; & gt; & gt; & gt; & gt; & gt; sys.maxsize 9223372036854775807 & gt; & gt; & gt;
Семя является внутренней переменной в случайном пакете, которая используется для создания следующего случайного числа. Когда запрашивается новый номер, семя также обновляется.
Я бы просто использовал 0 в качестве семени, если вы хотите иметь одинаковые случайные числа каждый раз или настроить i.
У CorelDraw был случайный генератор шаблонов, который был инициализирован семенем. Шаблоны сильно различались для разных семян, поэтому семена были важной конфигурационной информацией о шаблоне. Он должен быть частью параметров конфигурации для ваших прогонов.
EDIT: Как отмечено эфемерным, внутреннее состояние генератора случайных чисел может быть более сложным, чем семя, в зависимости от его реализации.
random ()
, но не могут быть прямым результатом посева. Поэтому неточно сказать, что семя является внутренней переменной - оно просто заселяет исходное состояние.
– ephemient
16 February 2011 в 06:01
Если вы «установили» семя, используя random.seed (None)
, рандомизатор автоматически высевается как функция в системное время. Однако вы не можете получить доступ к этому значению, как вы заметили. Что я делаю, когда хочу рандомизировать, но все еще знаю, что это семя:
tim = datetime.datetime.now () randseed = tim.hour * 10000 + tim.minute * 100 + tim .second random.seed (randseed)
note: причина, по которой я предпочитаю это использовать time.time ()
, предложенную @Abdallah, заключается в том, что таким образом randseed является удобочитаемым человеком и сразу понятным, что часто имеет большие преимущества. Компоненты даты и даже микросегменты также могут быть добавлены по мере необходимости.
Состояние генератора случайных чисел не всегда является просто семенем. Например, безопасный PRNG обычно имеет энтропийный буфер, который представляет собой больший блок данных.
Однако вы можете сохранить и восстановить все состояние генератора числа рандов, чтобы вы могли воспроизвести его результаты позже::
import random old_state = random.getstate () print random.random () random.setstate (old_state) print random.random () # Вы также можете восстановить состояние в свои собственные экземпляр PRNG, чтобы избежать проблем с потоковой безопасностью при использовании глобального экземпляра по умолчанию. prng = random.Random () prng.setstate (old_state) print prng.random ()
Результаты getstate
можно, конечно, мариновать, если вы хочу сохранить его настойчиво.
Я хотел сделать то же самое, но я не мог получить семя. Итак, я думал, потому что семя генерируется со временем. Я создал свое семя, используя системное время, и использовал его как семя, поэтому теперь я знаю, какое семя было использовано.
SEED = int (time.time ()) random.seed (SEED) [ ! d0]
Вы можете подклассифицировать random.Random, переписать метод seed () так же, как это делает python (v3.5 в этом примере), но сохранить начальное значение в переменной перед вызовом super ():
import random class Random (random.Random): def seed (self, a = None, version = 2): from os import urandom as _urandom from hashlib import sha512 as _sha512, если a None: try: # Семя достаточно байты, чтобы охватить пространство состояний 19937 бит # для Mersenne Twister a = int.from_bytes (_urandom (2500), 'big'), за исключением NotImplementedError: время импорта a = int (time.time () * 256) # использовать дробные секунды, если version == 2: if isinstance (a, (str, bytes, bytearray)): if isinstance (a, str): a = a.encode () a + = _sha512 (a) .digest () a = int.from_bytes (a, 'big') self._current_seed = a super (). seed (a) def get_seed (self): return self._current_seed
Если вы проверите его, первое случайное значение генерируется с новым семенем, а второе значение, сгенерированное с использованием одного и того же семени (с помощью метода get_seed (), который мы создали) будет равным: [!d 3]
& gt; & gt; & gt; & gt; rnd1 = Random () & gt; & gt; & gt; & gt; seed = rnd1.get_seed () & gt; & gt; & gt; & gt; v1 = rnd1.randint (1, 0x260) & gt; & gt; & gt; & gt; & gt; & gt; rnd2 = Random (seed) & gt; & gt; & gt; & gt; & gt; v2 = rnd2.randint (1, 0x260) & gt; & gt; & gt; & gt; & gt; & gt; v1 == v2 True
Если вы храните / копируете огромное значение семени и пытаетесь использовать его в другом сеансе, генерируемое значение будет точно таким же.
os.urandom
), поэтому это почти всегда не нужно. – Glenn Maynard 16 February 2011 в 08:00random.getseed ()
i>, но это гораздо менее болезненно, чем эквивалент в Java . – smci 9 February 2012 в 02:10seed = ord (os.urandom (1))
? – Charlie Parker 30 March 2018 в 00:03