Случайный порядок слов программа

Хочу попросить вашей помощи вот в чем.
Задание состоит в том, чтобы сначала ввести в программе слово, а затем при каждом нажатии кнопки выводить одну из букв этого слова в случайном порядке, чтобы они не повторялись. Проблема заключается в том, что я не могу исключить их повторение.
У меня либо получается выводить по одной букве с повторами, либо без повторов, но все буквы сразу.
Наверное, это совсем не сложно, но мой мозг отказывается мне в этом помочь.
Спасибо за помощь!

Пользователь
Регистрация: 05.10.2010
Сообщений: 10

private void RandomSmbBtn_Click(object sender, EventArgs e) < char[] input_str; char[] mix_str; char temp; Random r = new Random(); input_str = StrTextBox.Text.ToCharArray(); mix_str = input_str; //формируем перемешанный массив for (int i = 0; i < input_str.Length; i++) < int randomIndex = r.Next(mix_str.Length); temp = mix_str[i]; mix_str[i] = mix_str[randomIndex]; mix_str[randomIndex] = temp; >//выводим перемешанное слово for (int i = 0; i < mix_str.Length; i++) < string s = mix_str[i].ToString(); StrRichTextBox.AppendText(s + «n»); >//выводим по одному случайному символу изначальной строки int[] indexes = new int[mix_str.Length]; Random rand = new Random(); int randIndex = rand.Next(mix_str.Length); string str = mix_str[randIndex].ToString(); StrRichTextBox.AppendText(str + «n»); > >
Проблема заключается с одиночным выводом случайных символов, вот.

Как исключить их повтор?
Пользователь
Регистрация: 26.12.2010
Сообщений: 47
Запихнуть в лист, и когда выводиш символ, тогда удаляеш елемент листа
KISS — Keep It Simple Stupid
Регистрация: 09.01.2008

Порядок слов в немецком предложении — ВСЕ, что нужно знать

Сообщений: 26,238

выведенный символ удаляйте из строки и всех делов то..

только решите для себя, если повторяющиеся символы есть в слове, как правильно выводить.
поясню. например, слово БОБ : буква Б должна вывестись два раза или один?

Пользователь
Регистрация: 05.10.2010
Сообщений: 10

Точно «всего и делов-то») В задании вообще не оговорено, не должны ли буквы повторяться, это я так для себя решила, вот. Спасибо большое за ваши ответы!

Источник: www.programmersforum.ru

Как перемешать слова в ворде в случайном порядке

Перемешиваем строки и слова в случайном порядке — онлайн сервис

Онлайн-программа для перемешивания текстовых строк, списков, слов, чисел, имен, названий в случайном порядке.

Область применения сервиса
— Уникализация текстов для сайтов, написания рефератов курсовых и дипломных работ.
— Определение победителя в конкурсах и викторинах по нику / имени пользователя, или его порядковому номеру.

Будет интересно узнать, для каких еще задач можно использовать данный инструмент? Напишите, пожалуйста, об этом в комментариях.

Порядок слов в английском предложении. Как правильно? Для начинающих, с нуля. Утвердительные.

Комментарии и отзывы: 23

15. mix lines and words online • 15.03.2019
Online program for mixing text strings, lists, words, numbers, names, titles in random order.

Scope of service
— Unique texts for websites, writing abstracts of term papers and dissertations.
— Determination of the winner in contests and quizzes on the nickname / username, or its serial number.

Группа Вконтакте

Отключение рекламы на рес
Отключить информационные сообщения на экране. зеленый квадра .

7-Zip 18.05
Отличный архиватор, пользуюсь им почти 15 лет. Автор-професс .

Ка4ка.ру — все для твоей
Сайт просто стал дерьмовым. Проще качать на MUZMO.RU,хотя ра .

Читайте также:
Компьютерным вирусом является любая программа созданная на языках низкого уровня

Как включить Wi-Fi в Wind
Дружище на 11 комментарии, ты просто ювелир, самый неочевидн .

Keyran 1.1.9
Ну что могу сказать о программе, программа очень удобная, с .

ВконтактеYouYube

Как перемешать слова в ворде в случайном порядке

15. mix lines and words online • 15.03.2019
Online program for mixing text strings, lists, words, numbers, names, titles in random order.

Scope of service
— Unique texts for websites, writing abstracts of term papers and dissertations.
— Determination of the winner in contests and quizzes on the nickname / username, or its serial number.

Быстрый метод перемешивания элементов списка в Excel

В этом приеме описывается быстрый метод перемешивания элементов списка. Это подобно перетасовке колоды карт, где каждая строка представляет собой карту.

На рис. 165.1 вы можете видеть список из двух столбцов, отсортированных в определенном порядке по столбцу В. Цель заключается в том, чтобы расставить строки в случайном порядке.

Рис. 165.1. Этот список может быть перемешан случайным образом

Рис. 165.1. Этот список может быть перемешан случайным образом

  1. В ячейку С1 введите заголовок Случайное число.
  2. В ячейку С2 введите следующую формулу: =СЛЧИС() .
  3. Скопируйте С2 вниз по столбцу, чтобы таблица стала полной.
  4. Активизируйте любую ячейку в столбце С и выберите Главная ► Редактирование ► Сортировка и фильтр ► Сортировка от минимального к максимальному (или щелкните правой кнопкой мыши и выберите команду Сортировка в контекстном меню).

Для получения другой случайной конфигурации нажмите F9, чтобы сгенерировать новые случайные числа, а затем отсортируйте снова. На рис. 165.2 показан перемешанный список.

Скачать String Mixer 2.2

Бесплатная программа для просмотра и редактирования всех форматов текстовых документов.

Бесплатный полноценный офисный пакет для Windows, позволяющий свободно работать с любыми.

Atom — кроссплатформенный текстовый редактор с открытым исходным кодом и поддержкой.

PDF-XChange Viewer — небольшая и полнофункциональная программа для просмотра файлов в формате PDF. .

LibreOffice — мощный пакет офисных приложений, включающий в себя все самые необходимые.

PPTX Viewer — бесплатная и удобная в эксплуатация программа, которая позволяет открывать.

Похожие публикации:

  1. Как найти катеты прямоугольного треугольника если известна гипотенуза и площадь
  2. Как перевернуть число в экселе
  3. Как работает поляризационная пленка
  4. Напишите программу которая в последовательности натуральных чисел определяет минимальное

Источник: gshimki.ru

Вывод списка слов в случайном порядке без повторений

alt text

Скриншот результата выполнения: Выводит пустой список.

Отслеживать
6,333 4 4 золотых знака 25 25 серебряных знаков 53 53 бронзовых знака
задан 10 мар 2015 в 11:41
161 1 1 золотой знак 3 3 серебряных знака 14 14 бронзовых знаков

А разве randitem отсутствует в spisok ? Вроде как он всегда там будет — мы же из него берем. А значит empty_list += randitem никогда не выполнится )

10 мар 2015 в 11:43
10 мар 2015 в 16:36
19 июл 2015 в 15:26
Разрешается ли модифицировать исходный список?
25 фев 2018 в 18:31

14 ответов 14

Сортировка: Сброс на вариант по умолчанию

Раз пошла такая пьянка, то вот мой вариант:

import random spisok = [«Love», «World», «Peace», «Putin»,] random.shuffle(spisok) print spisok
Отслеживать
ответ дан 11 мар 2015 в 9:52
1,767 8 8 серебряных знаков 10 10 бронзовых знаков
19 июл 2015 в 15:22
4 июл 2021 в 7:22

Чтобы вывести уникальные слова из списка в случайном порядке, используя различные генераторы псевдослучайных чисел:

#!/usr/bin/env python import random words = [«Alex», «Kate», «Love», «World», «Peace», «Putin»,] unique_words = list(set(words)) random.shuffle(unique_words) # shuffle using default Mersenne Twister generator random.SystemRandom().shuffle(unique_words) # OS-provided generator print(«n».join(unique_words))
Отслеживать
ответ дан 19 июл 2015 в 15:19
51.9k 11 11 золотых знаков 107 107 серебряных знаков 309 309 бронзовых знаков
import random spisok = [«Love», «World», «Peace», «Putin»,] while spisok: print spisok.pop(random.randint(0, len(spisok)-1))

Читайте также:
Как обновить программу до последней версии

Отслеживать
ответ дан 11 мар 2015 в 8:46
2,475 19 19 серебряных знаков 25 25 бронзовых знаков

Я выше про shuffle писал, вы бы тогда хоть и это решение привели бы. Только стоило бы уточнить, что эти примеры меняют исходный список (ваш способ вообще его очищает). Но ответ выше памяти зато требует больше. Привели бы лучше пример, чтобы и список исходный не меняло, и памяти почти не ело ))

11 мар 2015 в 9:16

Я бы сделал это так:

import random spisok = [«Alex», «Kate», «Love», «World», «Peace», «Putin»,] empty_list = [] while len(empty_list) != len(spisok): randitem = random.choice(spisok) if randitem not in empty_list: empty_list.append(randitem) print(empty_list)

Обновление

import random spisok = . empty_list = [] for item in spisok: rand_index = random.randint(0, len(empty_list) empty_list.insert(rand_index), item)

и этот вариант гораздо лучше.

Отслеживать
ответ дан 10 мар 2015 в 12:01
908 1 1 золотой знак 6 6 серебряных знаков 17 17 бронзовых знаков

А я бы shuffle/random.shuffle использовал. А то — будет в списке миллион записей и сколько мне ждать надо будет, чтобы размеры списков сравнялись? Если же самому делать, тогда уж из spisok удалять. Тогда и проверка на присутствие в empty_list не нужна будет.

10 мар 2015 в 12:20
Я пытался исправить текущее решение, а не создать новое.
10 мар 2015 в 12:24

Ну указать на ошибку в логике можно было и в комментарии. Потому я и не стал делать свой комментарий ответом. Для ответа не хватало бы разбора примеров с возможными вариантами. А в текущем виде вы не столько «исправили» решение, сколько замаскировали ошибку (ту, которая будет долго выполняться). Исправить вариант автора следовало как-то так: import random spisok = . empty_list = [] for item in spisok: rand_index = random.randint(0, len(empty_list) empty_list.insert(rand_index), item) Тогда скорость заполнения даже миллионов слов будет приемлемой.

10 мар 2015 в 12:50
Да Ваш вариант гораздо лучше.
10 мар 2015 в 13:20

>>> import random >>> array = [«Alex», «Kate», «Love», «World», «Peace», «Putin»] >>> print(*random.sample(set(array), len(set(array))), sep=’n’)
Отслеживать
ответ дан 29 ноя 2017 в 18:34
Pavel Durmanov Pavel Durmanov
5,678 3 3 золотых знака 21 21 серебряный знак 44 44 бронзовых знака

чтобы и список исходный не меняло, и памяти почти не ело ))

import random def iter_shuffled(l): indices = list(range(len(l))) random.shuffle(indices) for i in indices: yield l[i] spisok = [«Love», «World», «Peace», «Putin»,] for item in iter_shuffled(spisok): print (item)

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

import random def iter_shuffled(l): new_list = list(l) random.shuffle(new_list) for item in new_list: yield item

Но тогда смысл оформлять код в виде функции-итератора практически теряется и код можно сократить до следующих строк:

import random spisok = [«Love», «World», «Peace», «Putin»,] new_list = list(spisok) random.shuffle(new_list) print new_list
Отслеживать
ответ дан 11 мар 2015 в 19:08
46.5k 16 16 золотых знаков 56 56 серебряных знаков 97 97 бронзовых знаков

Читайте также:
Чит программы для Майнкрафта

А чем indices = list(range(len(l))) лучше another_list = list(spisok) и последующего shuffle на нем? Только тем, что вместо строк числа?

Ну так исходный массив мог быть числовым.

11 мар 2015 в 19:20
11 мар 2015 в 19:29

import random inp = [«Alex», «Kate», «Love», «World», «Peace», «Putin»] l = list(set(inp)) random.shuffle(l) print (l)
Отслеживать
2,883 3 3 золотых знака 14 14 серебряных знаков 27 27 бронзовых знаков
ответ дан 25 фев 2018 в 8:49
11 1 1 бронзовый знак
Вывод будет в случайном порядке без повторений?

25 фев 2018 в 9:23

это не гарантирует случайный порядок. Попробуйте с PYTHONHASHSEED=0 переменной окружения запустить. Поэтому я убрал этот вариант из более поздних версий оригинальной версии своего ответа

25 фев 2018 в 9:26
25 фев 2018 в 11:11

чтобы и список исходный не меняло, и памяти почти не ело ))

from random import shuffle lst = [ «Alex», «Kate», «Love», «World», «Peace», «Freddie Mercury» ] idx = list(range(len(lst))) shuffle(idx) while idx: print(lst[idx.pop()])
Отслеживать
ответ дан 12 мар 2015 в 8:12
VadimTukaev VadimTukaev
2,127 12 12 серебряных знаков 16 16 бронзовых знаков

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

Есть вариант через рекурсию, но я не знаю, сколько памяти на это решение уйдет. Может быть, накладные расходы будут большими, да и предел рекурсии быстро может быть достигнут. Да и решение не совсем чистое — исходный список все-таки меняется при работе, но затем возвращается в исходное. Есть еще один вариант с рекурсией, но он «очень и очень псевдослучайный». Там так же рекурсия используется, но глубина ее всего log N. Еще один «очень псевдослучайный» вариант пока зреет )

12 мар 2015 в 8:38

А битовые вектора в Python есть? Если да, то все решается с дополнительной памятью N бит за N циклов получения случайного числа. Аналогично разрешению коллизий при хэшировании с открытой адресацией.

12 мар 2015 в 9:07
Ну прям спектакль «Много шума из ничего». Автор В.И. Хэшспир:) Зато узнал много нового.
12 мар 2015 в 9:19

import random spisok = [«Alex», «Kate», «Love», «World», «Peace», «Putin»,] empty_list = [] count = len(spisok) schetchik = 0 while count != schetchik: for item in spisok: item = random.choice(spisok) empty_list.append(item) schetchik += 1 print(empty_list)
Отслеживать
34.5k 15 15 золотых знаков 65 65 серебряных знаков 93 93 бронзовых знака
ответ дан 24 апр 2015 в 9:48

Код из ответа Артёма не выполняет изначальное условие задачи: «. выводить список слов в случайном порядке.

На экране должны печататься без повторений все слова из представленного списка. » так как будут выводиться повторы из списка — отсутствует проверка на уже выбранные элементы. Чуть поправим:

import random spisok = [«Alex», «Kate», «Love», «World», «Peace», «Putin»,] empty_list = list() count = len(spisok) schetchik = 0 while count != schetchik: for i in spisok: item = random.choice(spisok) if item in empty_list: print(«Есть такие данные в новом списке!») else: empty_list.append(item) schetchik += 1 print(empty_list) # можно оставить вывод в for — увидим все попытки поиска, либо вывести из цикла.

Как уже замечали авторы в комментариях, есть более краткий и практичный вариант с созданием среза изначального списка:

import random spisok_slov = [«кот», «кот», «код», «код», «ток», «ток», «ток», «ток», «тук-тук», «мак», «крот», «плот», «кнут»] final_no_repeat_list = list(set(spisok_slov[:])) random.shuffle(final_no_repeat_list) print(final_no_repeat_list)

Источник: ru.stackoverflow.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru