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

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

10.01.2016, 13:44. Показов 2229. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru