0 / 0 / 0 Регистрация: 25.10.2013 Сообщений: 5 |
|
1 |
|
25.10.2013, 21:10. Показов 7981. Ответов 3
Нужно напечатать все 4-х значные числа без повторения цифр. Так, чтобы каждая цифра повторялась в числе только один раз.
0 |
ThisIsMyName 8 / 8 / 4 Регистрация: 17.11.2009 Сообщений: 36 |
||||
25.10.2013, 21:55 |
2 |
|||
#python2.7
1 |
pyuser 223 / 208 / 63 Регистрация: 26.05.2011 Сообщений: 363 |
||||
26.10.2013, 08:04 |
3 |
|||
0 |
4865 / 3287 / 468 Регистрация: 10.12.2008 Сообщений: 10,570 |
|
26.10.2013, 19:27 |
4 |
9999 -> 10000
0 |
Интересный вопрос! Спасибо за математическую задачу по комбинаторике, попробую ответить.
У нас четырёхзначное натуральное число. По условию ни одна из цифр не должна встретиться более одного раза.
Для первой позиции (разряд тысяч) мы имеем девять возможных вариантов: все цифры от 1 до 9. Ноль нам не годится, поскольку целые числа по правилам математики не могут начинаться с нуля.
Для второй позиции, то есть для разряда сотен, мы имеем также девять вариантов. Первая использованная нами цифра уже выбыла из соревнования. Допустим, если это была двойка, то она выбыла. Но зато добавился ноль!
Для третьей цифры (разряд десятков) мы имеем уже только восемь вариантов.
И, наконец, для четвёртой цифры — это разряд единиц — остаётся лишь семь вариантов.
Чтобы найти итоговое количество всевозможных различных натуральных четырёхзначных чисел без повторяющихся цифр, нам нужно вышеуказанные 4 числа перемножить. Получим: 9 * 9 * 8 * 7 = 4536.
P. S. Всё-таки хочу свой ответ отредактировать, так как почему-то мне показалось после размышлений, что решил я не вполне верно и что речь шла о комбинациях цифр, а не о натуральных числах.
Если речь в вопросе идёт именно о комбинациях, например, это подбор комбинаций для сейфа, то ответ изменится. В комбинациях первой цифрой может быть и ноль.
В этом случае правильных комбинаций будет больше. А именно: 10 * 9 * 8 * 7 = 5040.
Итак, если в задаче подразумевается, что ноль может быть и первой цифрой тоже, то тогда правильный ответ таков: 5040 различных комбинаций. Это уже мой окончательный ответ.
Делаю игру, в ней мне нужен “бот” которые будет выдавать мне рандомное число, но оно должно быть , так же в числе не может быть одинаковых цифр. Например, бот выдает 1223, оно не подходит, бот даёт следующее число 3213, оно так же не подходит и так до того момента пока в числе не будет одинаковых цифр, например: 1234.
Мой код работает не очень, вот он:
import random
def get_random_number(self):
random_number = random.randint(0000, 9999)
if len(str(random_number)) == 4:
lst_number = list(str(random_number))
for i in range(0, len(lst_number)):
for j in range(i + 1, len(lst_number)):
if lst_number[i] == lst_number[j]:
random_number = random.randint(0000, 9999)
if len(str(random_number)) == 4:
lst_number = list(str(random_number))
print(random_number, " and ", lst_number)
return random_number
В компьютерном тестировании часто возникает необходимость выбрать из большого массива Nm вопросов некоторое меньшее количество Nq случайным образом. Существенно, чтобы эти вопросы не повторялись. Если Nm=Nq, то должны быть заданы все вопросы в случайном порядке. Или использовать его в игре.
Я использую такой генератор случайных чисел (элементы, как и всегда в С, нумеруются с нуля):
using System; namespace генераторНеПовторяющихсяЦелыхЧисел { class Program {
Метод GenSetN генерирует множества Nq не повторяющихся целых чисел в диапазоне от 0 до Nm-1. Добавьте его в свое пространство имен проекта и используйте его сколько нужно раз. Если Вам нужно сгенерировать массив qN[] из 3 неповторяющихся чисел в диапазоне от 0 до 7, то нужно просто вызвать метод GenSetN(3,8);
static int GenSetN(int Nq, int Nm, int[] qN) {
Если зададим Nq>Nm, то выполнится перестановка, и тогда Nq < Nm. Это некоторая «защита от дурака», совсем не обязательная в Вашей программе
int p; if (Nq > Nm) { p = Nm; Nm = Nq; Nq = p; }
Создаем объект класса Random и задаем цикл while по k (нам нужно сгенерировать Nq различных целых чисел!). Булевская переменная b — индикатор факта, что новое число отсутствует в формирующемся массиве
Random r = new Random(); int k = 0; while (k < Nq) { p = r.Next(Nm); // новое число bool b = true; // Проверка, имеется ли уже такое число в массиве for (int i = 0; i < k; i++) if (p == qN[i]) { b = false; break; // досрочный выход из цикла for, если такое число уже имеется в массиве }
Если такого числа нет, то добавим его в наш массив:
if (b) { qN[k] = p; k++; } } // конец цикла while return Nq; // возврат Nq - фактическая длина массива }
Проверку метода GetSetN можно сделать, например, так:
static void Main(string[] args) { int Nq = 25; int Nm = 50; // не больше 100 ! int[] qNumber = new int[100]; // Результат Nq = GenSetN(Nq, Nm, qNumber); for (int i = 0; i < Nq; i++) Console.Write(" {0} ", qNumber[i]); Console.ReadKey(); } } }
Имея такой массив, легко организовать выбор вопросов из всего множества вопросов тестирования.
NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.
Помощь проекту:
Преподаватель который помогает студентам и школьникам в учёбе.
Математика | ||
Решение задачи | ||
18 февраля 2021 | ||
Выполнен, номер заказа №16011 | ||
Прошла проверку преподавателем МГУ | ||
245 руб. |
Напишите мне в чат, пришлите ссылку на эту страницу в чат, оплатите и получите файл!
Закажите у меня новую работу, просто написав мне в чат!
Описание заказа и 38% решения ( + фото):
Сколькими способами из цифр от 1 до 8 можно составить четырехзначное число без повторяющихся цифр так, чтобы это число: а) оканчивалось цифрой 1 или 8; б) было больше 2000 и меньше 4000?
Решение
Размещениями из 𝑛 элементов по 𝑘 в каждом 𝑛 ≥ 𝑘 называют такие соединения, в каждое из которых входит 𝑘 элементов, взятых из данных 𝑛 элементов, и которые отличаются друг от друга либо самими элементами, либо порядком их расположения. Число размещений из 𝑛 элементов по 𝑘 находят по формуле
или, пользуясь факториалами,
а) Поскольку заданное число заканчивается например на 8, то на остальные три позиции будет 7 разных цифр, и еще столько же вариантов, когда число заканчивается например на 1. Тогда
б) Поскольку заданное число больше 2000 и меньше 4000, то первая цифра получается 2 или 3, а на остальные три позиции будет 7 разных цифр, и результат опять удваиваем, поскольку 2 разных цифры могут быть на первой позиции. Тогда
Ответ: 𝑁1 = 420; 𝑁2 = 420
Похожие готовые решения по математике:
- В шахматном турнире участвовало 12 шахматистов, каждый из которых сыграл по одной партии. Сколько всего было сыграно
- Сколько шестизначных чисел можно образовать из цифр 1, 2, 3, 4, 5, 6, 7, 8, 9, если каждое число должно состоять из трех
- Сколько можно сделать костей домино, используя числа 0,1,2,3,4,5,6,7,8,9?
- Замок сейфа открывается, если набрана правильная комбинация из четырех цифр от 0 до 9. Кода Вы не знаете. Найти наибольшее
- Сколькими способами можно составить двузначное нечетное число, меньшее 83, используя цифры 0, 1, 3, 8 и 9?
- Сколько команд участвовало в финале первенства, если известно, что каждая команда сыграла с каждой из остальных по одной игре
- Команда шахматистов состоит из 7 спортсменов. Перед игрой нужно выбрать шахматиста, выступающего на первой доске, и шахматиста
- При встрече 12 человек обменялись рукопожатиями. Сколько рукопожатий было сделано при этом?
- В выборах участвуют два кандидата. По опросу респондентов, популярность первого кандидата равна 83%, популярность второго кандидата равна 82% (опрос
- Купили две ценные бумаги. Первая в конце года должна принести дивиденды с вероятностью 0,8, а вторая – с вероятностью
- Два стрелка одновременно выстреливают в мишень. Вероятность попадания для первого равна 0,4, для второго – 0,5. Составить закон распределения
- В двух урнах находятся шары, отличающиеся только цветом, причем в первой урне 5 белых шаров, 11 черных и 8 красных, а во второй соответственно 10, 8 и 6. Из обеих урн