Случайное число C# код

karkun15

Client
Регистрация
31.01.2020
Сообщения
137
Благодарностей
4
Баллы
18
Покажите, пожалуйста, как получить случайное число от 1 до 100 дайте пожалуйста ссылку на хороший мануал по переменным в c#
Я больше не могу. Простые вещи не сделать. php знаю.
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 526
Благодарностей
1 323
Баллы
113
Покажите, пожалуйста, как получить случайное число от 1 до 100 дайте пожалуйста ссылку на хороший мануал по переменным в c#
Я больше не могу. Простые вещи не сделать. php знаю.
Чем вас кубик не устраивает?
62936

Если принципиально, то тут код.
 

karkun15

Client
Регистрация
31.01.2020
Сообщения
137
Благодарностей
4
Баллы
18
Чем вас кубик не устраивает?

Если принципиально, то тут код.
Мне надо сделать много рандомных переменных и потом с ними много чего сделать.
Не хочется разводить кубиков на 3 листа только из за переменных.
Это логично?
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 526
Благодарностей
1 323
Баллы
113
Мне надо сделать много рандомных переменных и потом с ними много чего сделать.
Не хочется разводить кубиков на 3 листа только из за переменных.
Это логично?
Я вам ссылку дал на c# или вот еще тема. или пользуйтесь гугл поиском, должно помочь.
 
  • Спасибо
Реакции: karkun15

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 370
Баллы
113
@WebBot Не надо советовать код, не знания его. Там нет lock'а, что может поломать рандом во всем постере...
Либо как в посте выше, но создание рандома лучше вынести в общий код, что бы создавать 1 раз.
C#:
Random rnd = new Random(Guid.NewGuid().GetHashCode());
Так будет более рандомен, так как по умолчанию использует время.
 
  • Спасибо
Реакции: xdriver и Roman48

karkun15

Client
Регистрация
31.01.2020
Сообщения
137
Благодарностей
4
Баллы
18
C#:
Random rnd = new Random();
int random = rnd.Next(0, 101);
В переменной random будет случайное число от 0 до 100
Это нормально что после выполнения кода переменной Random нет в списке переменных?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
Это нормально что после выполнения кода переменной Random нет в списке переменных?
если не создавал переменную в зенке, то ее там и не будет. этот код только число генерирует и возвращает результат в настроенную переменную в кубике. Random это переменная C# кода.
@Zymlex привел код который обращается напрямую к переменным в зенке. они должны быть созданы до выполнения кода, иначе будет ошибка.
 
  • Спасибо
Реакции: Yuriy Zymlex

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 370
Баллы
113
Это нормально что после выполнения кода переменной Random нет в списке переменных?
Это обычная переменная C#.
Переменные project.Variables["var_ZP1"].Value должны быть созданы заранее.
 

karkun15

Client
Регистрация
31.01.2020
Сообщения
137
Благодарностей
4
Баллы
18
ни должны быть созданы до выполнения кода, иначе будет ошибка.
как создат её /их кодом?
project.Variables["var_ZP1"].Value = ""; // хоть пустой объявить

кубик то я вижу, но если мне надо 4 переменных мне что 4 кубика вставлять. хотелось бы кодом объявить

int var_ZP1; так?
 
Последнее редактирование:

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
  • Спасибо
Реакции: karkun15

karkun15

Client
Регистрация
31.01.2020
Сообщения
137
Благодарностей
4
Баллы
18
Спасибо. Это помогло
 

karkun15

Client
Регистрация
31.01.2020
Сообщения
137
Благодарностей
4
Баллы
18
помогло создать одну переменную и потом закинуть в неё рандом значение.
А вот две переменные и более не создать.

работает
C#:
string variableName = "var_ZP1"; //new variable name
string variableValue = "200"; //new variable value
object obj = project.Variables;
obj.GetType().GetMethod("QuickCreateVariable").Invoke(obj,new Object[]{variableName});
project.Variables[variableName].Value = variableValue;

Random rnd = Global.Classes.rnd;
lock(rnd)
{
    project.Variables["var_ZP1"].Value = rnd.Next(1, 101).ToString();
    //project.Variables["var_ZP2"].Value = rnd.Next(1, 101).ToString();
   // project.Variables["var_ZP3"].Value = rnd.Next(1, 101).ToString();
    ///project.Variables["var_ZP4"].Value = rnd.Next(1, 101).ToString();
}
не работает
C#:
string variableName = "var_ZP1"; //new variable name
string variableValue = "200"; //new variable value
object obj = project.Variables;
obj.GetType().GetMethod("QuickCreateVariable").Invoke(obj,new Object[]{variableName});
project.Variables[variableName].Value = variableValue;

string variableName = "var_ZP2"; //new variable name
string variableValue = "30"; //new variable value
object obj = project.Variables;
obj.GetType().GetMethod("QuickCreateVariable").Invoke(obj,new Object[]{variableName});
project.Variables[variableName].Value = variableValue;

Random rnd = Global.Classes.rnd;
lock(rnd)
{
    project.Variables["var_ZP1"].Value = rnd.Next(1, 101).ToString();
    project.Variables["var_ZP2"].Value = rnd.Next(1, 101).ToString();
   // project.Variables["var_ZP3"].Value = rnd.Next(1, 101).ToString();
    ///project.Variables["var_ZP4"].Value = rnd.Next(1, 101).ToString();
}
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
помогло создать одну переменную и потом закинуть в неё рандом значение.
А вот две переменные и более не создать.

работает
C#:
string variableName = "var_ZP1"; //new variable name
string variableValue = "200"; //new variable value
object obj = project.Variables;
obj.GetType().GetMethod("QuickCreateVariable").Invoke(obj,new Object[]{variableName});
project.Variables[variableName].Value = variableValue;

Random rnd = Global.Classes.rnd;
lock(rnd)
{
    project.Variables["var_ZP1"].Value = rnd.Next(1, 101).ToString();
    //project.Variables["var_ZP2"].Value = rnd.Next(1, 101).ToString();
   // project.Variables["var_ZP3"].Value = rnd.Next(1, 101).ToString();
    ///project.Variables["var_ZP4"].Value = rnd.Next(1, 101).ToString();
}
не работает
C#:
string variableName = "var_ZP1"; //new variable name
string variableValue = "200"; //new variable value
object obj = project.Variables;
obj.GetType().GetMethod("QuickCreateVariable").Invoke(obj,new Object[]{variableName});
project.Variables[variableName].Value = variableValue;

string variableName = "var_ZP2"; //new variable name
string variableValue = "30"; //new variable value
object obj = project.Variables;
obj.GetType().GetMethod("QuickCreateVariable").Invoke(obj,new Object[]{variableName});
project.Variables[variableName].Value = variableValue;

Random rnd = Global.Classes.rnd;
lock(rnd)
{
    project.Variables["var_ZP1"].Value = rnd.Next(1, 101).ToString();
    project.Variables["var_ZP2"].Value = rnd.Next(1, 101).ToString();
   // project.Variables["var_ZP3"].Value = rnd.Next(1, 101).ToString();
    ///project.Variables["var_ZP4"].Value = rnd.Next(1, 101).ToString();
}
стоит ознакомится хотя бы с азами языка для начала
 
  • Спасибо
Реакции: Yuriy Zymlex

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
@doc правильно написал, хотя бы азы то надо знать.
объявлять переменные более одного раза в одной и той же области действия нельзя в C#, если надо использовать переменные еще раз, то делается просто присвоение.

62947
 

karkun15

Client
Регистрация
31.01.2020
Сообщения
137
Благодарностей
4
Баллы
18
стоит ознакомится хотя бы с азами языка для начала
Да, в первом посте я написал
Покажите, пожалуйста, как получить случайное число от 1 до 100 дайте пожалуйста ссылку на хороший мануал по переменным в c#
На видео в обучении только кубики. Набрал в гугл c# переменные и все что то не то.
Ищу просто на форуме разный код чтобы посмотреть, так тоже все в основном кубиками.
после php не укладывается от куда такая сложность с переменными
 

karkun15

Client
Регистрация
31.01.2020
Сообщения
137
Благодарностей
4
Баллы
18
на php в зенно прогать нельзя? для получения переменных и т.д.
 

karkun15

Client
Регистрация
31.01.2020
Сообщения
137
Благодарностей
4
Баллы
18
@doc правильно написал, хотя бы азы то надо знать.
объявлять переменные более одного раза в одной и той же области действия нельзя в C#, если надо использовать переменные еще раз, то делается просто присвоение.
Да, прочитал тут, но для меня это разные переменные ZP1 и ZP2... от сюда я и путаюсь
 

karkun15

Client
Регистрация
31.01.2020
Сообщения
137
Благодарностей
4
Баллы
18
Прикольно. Теперь ошибки и даже прокси не устанавливается кубиком.
Тип Время Сообщение
11:25:49 Компиляция кода Ошибка в действии "CS0128" "В этой области действия уже определена локальная переменная с именем "obj"". [Строка: 10; Cтолбец: 8]

На любое действие теперь такая ошибка.
Жуть , перезагрузка софта не помогла, только если удалить кубик с кодом )
 
Последнее редактирование:

karkun15

Client
Регистрация
31.01.2020
Сообщения
137
Благодарностей
4
Баллы
18
Ну ведь все оказалось просто.
Объявил в таблицу переменные вручную и выполнил код
C#:
Random rnd = Global.Classes.rnd;
lock(rnd)
{
    project.Variables["var_ZP1"].Value = rnd.Next(1, 101).ToString();
    project.Variables["var_ZP2"].Value = rnd.Next(1, 101).ToString();
    project.Variables["var_ZP3"].Value = rnd.Next(1, 101).ToString();
    ///project.Variables["var_ZP4"].Value = rnd.Next(1, 101).ToString();
}
а если через код объявлять переменные то надо проверять объявлена ранее или нет (пока не знаю как).
Вопрос пока повис, при переносе проекта например на другой комп, переменные "руками" не придется по новой объявлять?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
а если через код объявлять переменные то надо проверять объявлена ранее или нет (пока не знаю как).
Вопрос пока повис, при переносе проекта например на другой комп, переменные "руками" не придется по новой объявлять?
если переменная уже есть в проекте то создание такой же приведет к ошибке. обработка/ветвление при возможных ошибках это конструкция try/cath https://metanit.com/sharp/tutorial/2.14.php
 

Igorii

Client
Регистрация
21.02.2015
Сообщения
371
Благодарностей
297
Баллы
63
C#:
Random rnd = new Random();
int dd = rnd.Next(1, 28);
int mm = rnd.Next(1, 12);
int yy = rnd.Next(1970, 2000);
return dd-mm-yy;
Подскажите, пожалуйста, синтаксис последней строки в этом коде. Нужно, что бы вывод в переменную был в таком виде 10-12-1988, а не производилась арифметика
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 370
Баллы
113
Спасибо. Это помогло
Данный код может в любое время перестать работать!

Переменные следует создавать вручную в PM, иначе использовать project.Context["Любое имя"] (сбрасывается в PM при редактировании шаблона).
Так же не стоит забывать про списки и таблицы.
 
  • Спасибо
Реакции: karkun15

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113
Подскажите, пожалуйста, синтаксис последней строки в этом коде. Нужно, что бы вывод в переменную был в таком виде 10-12-1988, а не производилась арифметика
C#:
return string.Format("{0}-{1}-{2}", dd, mm, yy);
 
  • Спасибо
Реакции: Igorii

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 370
Баллы
113

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
Данный код может в любое время перестать работать!

Переменные следует создавать вручную в PM, иначе использовать project.Context["Любое имя"] (сбрасывается в PM при редактировании шаблона).
Так же не стоит забывать про списки и таблицы.
Ну наверно не в любое время, а все таки с выходом какой то версии зенки где программеры зенно могут сломать этот функционал и потом это будет баг, который годами будет правиться ?

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

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 370
Баллы
113
потом это будет баг, который годами будет правиться ?
Это не будет багом, а проблемой авторов и владельцев подобных "поделок".

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

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
Это не будет багом, а проблемой авторов и владельцев подобных "поделок".

Проблема не конкретно в этом случае, а во всех случаях, где используются подобные обходы.
а что тут такого криминального ? то что этого функционала нет из коробки ? Так у зенки много чего нет из коробки. И много чего даже на c# не работает. Приходиться маневрировать :-)
 

karkun15

Client
Регистрация
31.01.2020
Сообщения
137
Благодарностей
4
Баллы
18
Данный код может в любое время перестать работать!

Переменные следует создавать вручную в PM,.
Т.е. для такого кода
C#:
Random rnd = new Random();
int dd = rnd.Next(1, 28);
int mm = rnd.Next(1, 12);
int yy = rnd.Next(1970, 2000);
return dd-mm-yy;
надо сидеть и в ручную заводить переменные в таблицу?
вообще с каждой новой переменной (если через код C#) её надо заводить в таблицу?
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 370
Баллы
113
надо сидеть и в ручную заводить переменные в таблицу?
вообще с каждой новой переменной (если через код C#) её надо заводить в таблицу?
Речь про переменные постера.
 

karkun15

Client
Регистрация
31.01.2020
Сообщения
137
Благодарностей
4
Баллы
18
Ну а насчет однотипных временных переменных, в самом деле лучше использовать список или таблицу. в начале шаблона заполнить как надо, а потом обращаться к ним по номеру. можно даже замутить поиск по имени.
Списки и таблицы есть, но какое они имеют отношение к названиям переменных - я не понимаю.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)