PDA

Просмотр полной версии : [Помогите!] Выбор случайного числа


Rhino1234
02.08.2011, 14:53
Здарова всем суть проблемы такова дан список чисел через запятую причем этот список может быть совершенно разный в разных случаях (из разных чисел, разное кол-во чисел) Например :


79624192,39388153,15200770,123811835,74014717,5902 1832,132598264,60551690,34245643,68730381,22482429 ,14459923,100076052,76194326,108608536,111677460,1 39702721,68159006,124245023,63925280,70040099,5503 012,118175764,129914891,60023339,7807020,135124525 ,121382447,92511283,65678892,77720069,12859448,168 27450,114299963,107661859,41386050,133862468,58406 981,16355910,55930440,67698757,117553214,88581712, 28193361,45215314,76560979,91950664,57151066,34770 016,100871257,32648803,24433252,134149733,21220968 ,23042667,39809132,139126381,92910704,34183793,365 90709,120197751,132585072,22212721,63266912,404373 73,90871409,75374184,38352517,78032501,95438472,13 1709065,71020171,119780987,34222221,96990854,21288 079,106557584,7938194,137254028,72755853,102913158 ,18753176,80040089


так воот нужно выбрать случайный элемент из списка и занести в какую нибудь числовую переменную

СПС заранее !

MCseller
02.08.2011, 15:02
using System.Numerics;
class Program
{
static void Main(string[] args)
{
Random r = new Random();
BigInteger[] arr = { 79624192, 39388153, 15200770, 123811835, 74014717, 59021832, 132598264, 60551690, 34245643, 68730381, 22482429, 14459923, 100076052, 76194326, 108608536, 111677460, 139702721, 68159006, 124245023, 63925280, 70040099, 5503012, 118175764, 129914891, 60023339, 7807020, 135124525, 121382447, 92511283, 65678892, 77720069, 12859448, 16827450, 114299963, 107661859, 41386050, 133862468, 58406981, 16355910, 55930440, 67698757, 117553214, 88581712, 28193361, 45215314, 76560979, 91950664, 57151066, 34770016, 100871257, 32648803, 24433252, 134149733, 21220968, 23042667, 39809132, 139126381, 92910704, 34183793, 36590709, 120197751, 132585072, 22212721, 63266912, 40437373, 90871409, 75374184, 38352517, 78032501, 95438472, 131709065, 71020171, 119780987, 34222221, 96990854, 21288079, 106557584, 7938194, 137254028, 72755853, 102913158, 18753176, 80040089 };
BigInteger s = arr[r.Next(0, arr.Count())];
Console.WriteLine(s);
}

}

Rhino1234
02.08.2011, 16:07
забыл сказать желательно C++

Hermein
02.08.2011, 17:12
Есть онлайн-конвертер кодов ;) гугл в помощь

Rhino1234
03.08.2011, 12:02
переконвертил такая **** вышла ))) одни ошибки не выходит ((

MCseller
03.08.2011, 14:26
Скинул бы сюда, то что вышло. Или мы по-твоему экстрасенсы ?

Rhino1234
03.08.2011, 15:37
конвертер кода выдал такое вот .......


#include <string>
#include <iostream>

//C# TO C++ CONVERTER TODO TASK: The .NET System namespace is not available from native C++:
//using namespace System::Numerics;
class Program
{
static void Main(std::string args[])
{
Random *r = new Random();
BigInteger arr[83] = { 79624192, 39388153, 15200770, 123811835, 74014717, 59021832, 132598264, 60551690, 34245643, 68730381, 22482429, 14459923, 100076052, 76194326, 108608536, 111677460, 139702721, 68159006, 124245023, 63925280, 70040099, 5503012, 118175764, 129914891, 60023339, 7807020, 135124525, 121382447, 92511283, 65678892, 77720069, 12859448, 16827450, 114299963, 107661859, 41386050, 133862468, 58406981, 16355910, 55930440, 67698757, 117553214, 88581712, 28193361, 45215314, 76560979, 91950664, 57151066, 34770016, 100871257, 32648803, 24433252, 134149733, 21220968, 23042667, 39809132, 139126381, 92910704, 34183793, 36590709, 120197751, 132585072, 22212721, 63266912, 40437373, 90871409, 75374184, 38352517, 78032501, 95438472, 131709065, 71020171, 119780987, 34222221, 96990854, 21288079, 106557584, 7938194, 137254028, 72755853, 102913158, 18753176, 80040089 };
BigInteger *s = arr[r->Next(0, arr->Count())];
std::cout << s << std::endl;
}

};

MCseller
03.08.2011, 16:10
using namespace std;
int main{
Random r = new Random();
long arr[83] = { 79624192, 39388153, 15200770, 123811835, 74014717, 59021832, 132598264, 60551690, 34245643, 68730381, 22482429, 14459923, 100076052, 76194326, 108608536, 111677460, 139702721, 68159006, 124245023, 63925280, 70040099, 5503012, 118175764, 129914891, 60023339, 7807020, 135124525, 121382447, 92511283, 65678892, 77720069, 12859448, 16827450, 114299963, 107661859, 41386050, 133862468, 58406981, 16355910, 55930440, 67698757, 117553214, 88581712, 28193361, 45215314, 76560979, 91950664, 57151066, 34770016, 100871257, 32648803, 24433252, 134149733, 21220968, 23042667, 39809132, 139126381, 92910704, 34183793, 36590709, 120197751, 132585072, 22212721, 63266912, 40437373, 90871409, 75374184, 38352517, 78032501, 95438472, 131709065, 71020171, 119780987, 34222221, 96990854, 21288079, 106557584, 7938194, 137254028, 72755853, 102913158, 18753176, 80040089 };
long s = arr[r->Next(0, arr->Count())];
cout << s << endl;
}

Если компилировать в VisualStudio, то должно работать.

Rhino1234
03.08.2011, 17:34
MCseller, а ты не мог бы дать какие нибудь пояснения к каждой строке что бы мне понятнее было ? )

MCseller
03.08.2011, 19:20
Random r = new Random(); // Инициализация объекта "r" класса Random
long arr[] = { 79624192, 39388153, 15200770, 123811835, 74014717, 59021832, 132598264, 60551690, 34245643, 68730381, 22482429, 14459923, 100076052, 76194326, 108608536, 111677460, 139702721, 68159006, 124245023, 63925280, 70040099, 5503012, 118175764, 129914891, 60023339, 7807020, 135124525, 121382447, 92511283, 65678892, 77720069, 12859448, 16827450, 114299963, 107661859, 41386050, 133862468, 58406981, 16355910, 55930440, 67698757, 117553214, 88581712, 28193361, 45215314, 76560979, 91950664, 57151066, 34770016, 100871257, 32648803, 24433252, 134149733, 21220968, 23042667, 39809132, 139126381, 92910704, 34183793, 36590709, 120197751, 132585072, 22212721, 63266912, 40437373, 90871409, 75374184, 38352517, 78032501, 95438472, 131709065, 71020171, 119780987, 34222221, 96990854, 21288079, 106557584, 7938194, 137254028, 72755853, 102913158, 18753176, 80040089 }; // инициализация массива типа long
long s = arr[r->Next(0, arr->Count())]; // инициализация переменной типа long и присвоение ей элемента массива с индексом от 0(включительно) до кол-ва элементов в массиве (не включая верхнюю границу)
cout << s << endl; // Вывод в консоль переменной s со знаком конца строки.

Rhino1234
03.08.2011, 19:47
в C++ Builder твой вариант не прокатил вообщем я написал примерно то что ты задумал


const int v = 3; //сколько элементов в массиве
int c[v] = {79624192,39388153,15200770}; //сам массив
int x = Random(v); //задаем переменной x случайное число максРандом = 3
int z = c[x]; //ну и выводим как раз таки случайное число из массива


но у меня проблема такова

1)нужно загрузить все элементы в массив через TMemo (тут тупо проблема в том что массив из чисел(int) а если из memo загружать как String то будет тупо '7','9','6','2','4','1','9','2',',','3','9','3','8 ','8','1','5','3' вот так он делает)
2)нужно узнать сколько элементов(чисел) в массиве и занести в переменную v
3)ну и вывести случайный элемент в переменную z

MCseller
03.08.2011, 21:06
using System.Numerics;
class Program
{
static void Main(string[] args)
{
Random r = new Random();
BigInteger[] arr = { 79624192, 39388153, 15200770, 123811835, 740147172, 59021832, 132598264, 60551690, 34245643, 68730381, 22482429, 14459923, 100076052, 76194326, 108608536, 111677460, 139702721, 68159006, 124245023, 63925280, 70040099, 5503012, 118175764, 129914891, 60023339, 7807020, 135124525, 121382447, 92511283, 65678892, 77720069, 12859448, 16827450, 114299963, 107661859, 41386050, 133862468, 58406981, 16355910, 55930440, 67698757, 117553214, 88581712, 28193361, 45215314, 76560979, 91950664, 57151066, 34770016, 100871257, 32648803, 24433252, 134149733, 21220968, 23042667, 39809132, 139126381, 92910704, 34183793, 36590709, 120197751, 132585072, 22212721, 63266912, 40437373, 90871409, 75374184, 38352517, 78032501, 95438472, 131709065, 71020171, 119780987, 34222221, 96990854, 21288079, 106557584, 7938194, 137254028, 72755853, 102913158, 18753176, 80040089 };
BigInteger s = arr[r.Next(0, arr.Count())];
Console.WriteLine(s);
}

Убей себя об асфальт прыжком с 16 этажа, флудер, хотя бы что-то изменил...

Rhino1234
03.08.2011, 21:26
MCseller, если оно у тебя в VisualStudio идет значит и в борланде потянет ты че инклюдил (#include) ??

MCseller
03.08.2011, 22:02
MCseller, если оно у тебя в VisualStudio идет значит и в борланде потянет ты че инклюдил (#include) ??

Борланд в стандартной комплектации не работает с .NET, а значит не может использовать пространство имен System. А я пишу под .NET

Rhino1234
04.08.2011, 10:52
MCseller, ну ладно спасиб

Добавлено через 8 часов 9 минут
Вообщем написал НО заковырка одна в 1 строке как String преобразовать в char ???

char p = Memo1->Text;

srand(time(NULL));
vector<int> arr;
char string[ ] = { p };
char *razb;

razb = strtok(string, ",");
while(razb != NULL){
arr.push_back(atoi(razb));
razb = strtok(NULL, ",");
}
int randind=rand()%arr.size();
Edit1->Text = arr[randind];
СПС заранее !:rolleyeyes: