С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Эксперт HTML/CSS
 Аватар для Fedor92
2964 / 2621 / 1068
Регистрация: 15.12.2012
Сообщений: 10,091
Записей в блоге: 11

Простенький рандомный генератор

10.01.2016, 13:44. Показов 2209. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую Вас, товарищи, камрады и просто гости форума! Не часто выпадает мне случай заглядывать на ветку js, но сейчас ситуация патовая, после праздников мозг отказывается меня слушаться, а код надо бы закончить... Проблема вот в чём, имеется такой код:
JavaScript
1
2
3
4
5
6
7
var array = new Array();
array[0] = "Мир!";
array[1] = "Труд!";
array[2] = "Май!";
document.write(array[Math.round(Math.random()*2)]);
document.write(array[Math.round(Math.random()*2)]);
document.write(array[Math.round(Math.random()*2)]);
Адекватность сего творения на данный момент очень сложно оценить, так что если кто-то поможет улучшить - с меня личная благодарность и плюшка... Суть данного скрипта в том, чтобы в случайном порядке генерировать фразу, состоящую из 3-х слов в одну строку... Внимание вопрос: каким образом можно преобразовать данный код чтобы:
а) Генерировать не одну строку, а сразу несколько, например 5 - все возможные варианты строки...
б) Поместить сгенерированные фразы в <textarea>...
в) Исключить, определённое слово или слова из начала предложения...
Вот такой собственно объёмный вопрос... Буду рад выслушать Ваши предложения по оптимизации и прокачке...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.01.2016, 13:44
Ответы с готовыми решениями:

Рандомный генератор чисел
Привет, ребята, у меня назрел вопрос. Я только-только начал изучать C++, и мне дали задание, написать генератор чисел. Я ввожу два числа,...

Простенький генератор паролей
#include &lt;stdio.h&gt; int maxint,b,a,i,j,k; maxint = 32767; b=62; a=0; int i; int p; char u; int main() {

Не работает рандомный генератор чисел
Создал прогу, в которой массив из 12 элементов заполняется рандомными числами, выводит на экран индексы элементов массива, сам массив и на...

11
338 / 67 / 37
Регистрация: 22.12.2010
Сообщений: 138
10.01.2016, 17:10
Лучший ответ Сообщение было отмечено Fedor92 как решение

Решение

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

фразы будут помещаться в innerHTML для id ='txt'
HTML5
1
2
<textarea rows="7" cols="90" id="txt">
</textarea>
Например так, можно выводить n-строк, в каждой из которых находится по 3 случайно выбранных слова
Кликните здесь для просмотра всего текста
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
var array = new Array();
var mystr = new Array();
n = 5;
array[0] = "Мир!";
array[1] = "Труд!";
array[2] = "Май!";
mytext = document.getElementById('txt');
 
for (i = 0; i < n; ++i) {
mystr[i] = (array[Math.round(Math.random()*2)]) + (array[Math.round(Math.random()*2)])+ (array[Math.round(Math.random()*2)]) +'\n';
mytext.innerHTML += mystr[i]
}


А так выводить возможные варианты перестановок (3 слова = 3! = 6 строк):
Кликните здесь для просмотра всего текста
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var mystr = new Array();
mytext = document.getElementById('txt');
 
function show_permute(inp) {
  var results = new Array();
  function make_permute(array, new_tmp) {
    var tmp, new_tmp = new_tmp || new Array();
    for (var i = 0; i < array.length; i++) {
      tmp = array.splice(i, 1);
      if (array.length === 0) {
        results.push(new_tmp.concat(tmp) + '\n');
      }
      make_permute(array.slice(), new_tmp.concat(tmp));
      array.splice(i, 0, tmp[0]);
    }
    return results;
  }
  mystr = results;
  return make_permute(inp);
}
 
show_permute(["Мир!","Труд!","Май!"]);
mytext.innerHTML = mystr
2
Эксперт HTML/CSS
 Аватар для Shakalaka
653 / 556 / 322
Регистрация: 27.01.2015
Сообщений: 1,374
10.01.2016, 17:13
Лучший ответ Сообщение было отмечено Fedor92 как решение

Решение

Подключите библиотеку https://github.com/dankogai/js-combinatorics
HTML5
1
<textarea id="text"></textarea>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
var array = new Array();
array[0] = "Мир!";
array[1] = "Труд!";
array[2] = "Май!";
var content = "";
cmb = Combinatorics.permutation(array);
cmb.forEach(function(item){
    var text = item.toString();
    content += text + "\n";
});
document.getElementById("text").value = content;
2
Эксперт HTML/CSS
 Аватар для Fedor92
2964 / 2621 / 1068
Регистрация: 15.12.2012
Сообщений: 10,091
Записей в блоге: 11
10.01.2016, 17:43  [ТС]
DocC и Shakalaka, спасибо огромное - Вы спасли мой мозг от окончательного превращения в желе... DocC, отдельное спасибо за предоставленный js-код, всё работает уже понемногу разбираюсь, что к чему ... Shakalaka, спасибо за наводку на библиотеку, а вот код почему-то не пошёл... Но ничего страшного даст Бог разберусь... Так, что я думаю модеры на меня ругаться не будут, если я Вам обоим присужу правильные ответы... Если будут дополнения я только за...
0
129 / 50 / 8
Регистрация: 01.12.2013
Сообщений: 572
10.01.2016, 19:43
Если значений мало, то можно так:
JavaScript
1
2
3
4
var A =  Math.random();
if      (A >= 0    && A < 0.33){ var Way = 'Мир'; }
else if (A >= 0.33 && A < 0.66) { var Way = 'Труд'; }
else if (A >= 0.66  && A <= 1){ var Way = 'Май'; }
1
Эксперт HTML/CSS
 Аватар для Fedor92
2964 / 2621 / 1068
Регистрация: 15.12.2012
Сообщений: 10,091
Записей в блоге: 11
10.01.2016, 20:19  [ТС]
marrk, спасибо за интерес к теме... Значений будет много, но всё равно спасибо за код...
0
129 / 50 / 8
Регистрация: 01.12.2013
Сообщений: 572
10.01.2016, 20:21
значений будет много
Если значений много, например 1000 в массиве тогда переменную A умножаете на 1000 и вместо 0.33 получаете 330 (предварительно округлив до целого) - всё готово, берёте 333 элемент массива!
1
Эксперт JSЭксперт HTML/CSS
2436 / 1115 / 312
Регистрация: 23.06.2011
Сообщений: 3,529
11.01.2016, 06:54
Цитата Сообщение от Fedor92 Посмотреть сообщение
Суть данного скрипта в том, чтобы в случайном порядке генерировать фразу, состоящую из 3-х слов в одну строку...
Готовишься к разговору с молодняком на их языке? а что они натворили?
Будет трудно, обращайся за моральной поддержкой.
1
Эксперт HTML/CSS
 Аватар для Fedor92
2964 / 2621 / 1068
Регистрация: 15.12.2012
Сообщений: 10,091
Записей в блоге: 11
11.01.2016, 12:31  [ТС]

Не по теме:

Цитата Сообщение от newJS Посмотреть сообщение
Готовишься к разговору с молодняком на их языке? а что они натворили?
Всмысле? Если речь о блоге, то это не для блога... Это псевдослучайный генератор - он не годится для шифра Вернама... Там подойдёт либо радиоактивный распад - либо "белый шум"... А молодняку я больше ничего объяснять не буду, для себя понял одно, что сложно что-то объяснить, когда оппонент не воспринимает информацию, не имеет ничего общего с теорией вероятности и плохо умеет пользоваться недостатками криптоалгоритмов...


Цитата Сообщение от newJS Посмотреть сообщение
Будет трудно, обращайся за моральной поддержкой.
За поддержку спасибо...

Shakalaka, ещё раз спасибо, камрад, уже за код! Сегодня починил свои кривые руки и по-человечески его поставил... Всё гуд...
0
Эксперт HTML/CSS
 Аватар для Shakalaka
653 / 556 / 322
Регистрация: 27.01.2015
Сообщений: 1,374
11.01.2016, 13:58
Fedor92, пожалуйста)
Кстати, если еще нужно это
Цитата Сообщение от Fedor92 Посмотреть сообщение
Исключить, определённое слово или слова из начала предложения...
можно как-то так сделать
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var array = new Array();
array[0] = "Мир!";
array[1] = "Труд!";
array[2] = "Май!";
var content = "";
var exceptWords = ["Май!", "Труд!"];
cmb = Combinatorics.permutation(array);
cmb.forEach(function(item){
    if(exceptWords.indexOf(item[0]) + 1){
        item.shift();
        var text = item.toString();
    }
    else{
        var text = item.toString();
    }
    
    content += text + "\n";
});
document.getElementById("text").value = content;
1
Эксперт JSЭксперт HTML/CSS
2436 / 1115 / 312
Регистрация: 23.06.2011
Сообщений: 3,529
12.01.2016, 08:09
Цитата Сообщение от Fedor92 Посмотреть сообщение
Всмысле?
Так они сейчас так и говорят, вроде как из очень маленькой библиотеки случайно выдёргиваются слова и складываются в кучу.
Цитата Сообщение от Fedor92 Посмотреть сообщение
что сложно что-то объяснить, когда оппонент не воспринимает информацию, не имеет ничего общего с теорией вероятности и плохо умеет пользоваться недостатками криптоалгоритмов...
Абсолютно с тобой согласен, а ещё они понятия не имеют, что арбуз это ягода, чему их сейчас учат, непонятно.
0
12.01.2016, 10:45  [ТС]

Не по теме:

Цитата Сообщение от newJS Посмотреть сообщение
Так они сейчас так и говорят, вроде как из очень маленькой библиотеки случайно выдёргиваются слова и складываются в кучу.
Там речь немного о другом... Я им говорю про практику, а они продолжают лапшу вешать про теорию, которую сами не понимают и дёргают её из вики... Хотя всё - это время я им говорил именно про практику... :) Это даже по формуле криптоустойчивости видно... А они знают только, как криптоустойчивость считать в идеале, а как посчитать на практике - нет... :) Поэтому мне надоело и решил их тоже отправить на вики и предложил почитать, что такое проект "Венона", пущай ума набираются... :) Теоретики...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.01.2016, 10:45
Помогаю со студенческими работами здесь

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

Генератор комплексных чисел. Генератор гауссовских целых чисел
rand(1,n) - генерирует случайные числа, нормально распределенные на . Есть ли аналогичный генератор для комплексных чисел? В частности...

Рандомный decimal
Суть такова надо на php сгенерировать demical число между 2 числами! Т. е. 46.390294 &lt; x &lt; 71.916575 25.686874 &lt; y...

Рандомный выбор
#include&lt;iostream&gt; #include&lt;conio.h&gt; using namespace std; void questions(int t) { char q1 = &quot;Выберите правильный способ...

Рандомный выбор
Приветствую Всех! Подскажите пожалуйста, как написать такой запрос, Есть в таблица tbl, в ней поля pole1, pole2, pole3. В поля...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru