2012-05-31 4 views
2

Возможно ли получить семя из последовательности Random() в C#? C# - Получить семя из последовательности

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

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

+0

+1 для написания «что я действительно хочу достичь» часть вопроса, так как оказалось, что вам нужно что-то совершенно отличное от заданного вами вопроса (довольно распространенного и невозможного для обнаружения без «желания достичь», часть). –

+0

Спасибо, что редактировал мое сообщение. На мой взгляд, это было ясно, хотя ха-ха. Но теперь, когда я перечитал это, это правда, что вопрос недостаточно структурирован и полностью отличается от того, чего я хотел достичь. На этом веб-сайте, как представляется, есть участники, которые могут декодировать мысли новичков, это круто (больше не беспокоить вас с плохо заданными вопросами). У вас отличный день, и еще раз спасибо. – Heatith

ответ

4

Основываясь на ваших комментариях к @SLaks, я думаю, что вопрос, который вы задаете, не имеет ничего общего с проблемой, которую вы пытаетесь решить.

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

Это точно такая же проблема: как взять длинный сложный URL-адрес и превратить его в короткий URL-адрес?

Таким образом, я хотел бы посмотреть на этом знаменитом вопрос Re: URL shorteners: How to code a URL shortener?

Там вы увидите использование Bijective Functions и большое алгоритмическое описание, которое вы можете использовать для вашей собственной проблемы. Это можно использовать, чтобы превратить последовательность ваших примеров (например, 23,56,45,78,80) в один или два символа.

+0

Большое спасибо! Это именно то, что я искал. Я просто не очень хорошо себя зарекомендовал (возможно, потому, что я не носитель английского языка и у меня грязный ум). – Heatith

+0

По-прежнему вам предстоит сделать много работы, чтобы точно определить, как кодировать ваши атрибуты. Самое простое - сохранить атрибуты пользователей в таблице, закодировать идентификатор строки с помощью алгоритма и предоставить их для совместного использования. – yamen

+0

Хорошо, я не тороплюсь и постараюсь сделать это хорошо. :) Но теперь, по крайней мере, я знаю, с чего начать. – Heatith

2

Вы должны просто сохранить семена при первом его создании.

+0

Возможно, я неправильно объяснил себя. Мой код из семени (так что Random (seed)) выведет последовательность (например, 23,56,45,78,80) и поэтому создаст символ, основанный на этой последовательности.Но я также хочу, чтобы игрок, в редакторе, создал свою собственную последовательность, и из него получал семя, которое будет использоваться другими для вывода той же последовательности, поэтому тот же символ – Heatith

+0

Жаль, что я отредактировал, я нажал «отправить» «Прежде чем закончить мой пост. (писать с ipad непросто) – Heatith

3

Не существует способа прямого возврата семени из существующего экземпляра Random или последовательности, сгенерированной. Однако, когда вы создаете класс Random, вы можете использовать constructor that allows you to specify the seed. Если вы затем сохраните это семя, вы можете передать его другому человеку.

Если вы хотите, чтобы ваша конструкция была случайной, но сохраните это семя, одним из вариантов является использование 2 экземпляров Random. Первый может быть использован для создания семени, а затем построить вторую с таким количеством семян (которое вы сохраните и перейдете к другому человеку).

+0

Спасибо за ответы, ребята, я ценю. Я уже знаю, что то, что я хотел знать, это то, что, например, если игрок создает свою собственную последовательность, он может выводить семя, которое затем будет использоваться Random (seed) для вывода той же последовательности, которую создал игрок при создании персонаж. Имеет ли это смысл? – Heatith

+0

@Heatith Посмотрите мой второй абзац - вы можете просто произвольно генерировать семя, а затем им сохранить это семя и отправить его другим людям. –

+0

Дело в том, что я не хочу генерировать его случайным образом. Я просто подумал, что если пользователь указывает свою собственную последовательность, он может выводить семя, которое затем может быть использовано Random (seed), которое будет выводить одну и ту же последовательность. Но это просто невозможно. Я тупой. Спасибо за ваши быстрые ответы, хотя! Я должен был узнать больше об этом, прежде чем задавать глупые вопросы. Это ошибка, которую я больше не буду делать, извините. – Heatith

2

Почему бы вам просто не сохранить атрибуты персонажа, а не семя? Это прямолинейно и имеет большой смысл.

Кроме того, если пользователь создает свою собственную последовательность, у нее не будет «семени».

+0

Хм, да, я глуп, так как пользователь будет указывать свою собственную последовательность, а Random() использует очень конкретные вычисления, они никогда не будут равны. – Heatith

0

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

+0

О, я только что видел ваш комментарий, извините. Это очень интересная идея! Я буду помнить об этом. – Heatith

Смежные вопросы