vailixi Posted January 7, 2016 Posted January 7, 2016 (edited) So I was thinking about ways to create random directories and file names. I figure first I'll have to create a random string function first. I'm sure there are a ton of ways to do this. So here I'll just post what I came up with. I was messing around with Visual BASIC today. So that's what I coded it in. Any example are great. Don't care what language they are in. I created a string array and just used random numbers to index the array elements, then I concatenated them together to make a single string variable.I was going to make a random string of a random length by creating a random number and using that to end my loop but VB didn't like the syntax I was using. Module Module1 Sub Main() Dim StringArray() As String = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"} Dim RandomInteger As Integer Dim String1 As String Randomize() RandomInteger = Int(Rnd() * 51) String1 = StringArray(RandomInteger) Dim String2 As String Randomize() RandomInteger = Int(Rnd() * 51) String2 = StringArray(RandomInteger) Dim String3 As String Randomize() RandomInteger = Int(Rnd() * 51) String3 = StringArray(RandomInteger) Dim String4 As String Randomize() RandomInteger = Int(Rnd() * 51) String4 = StringArray(RandomInteger) Dim String5 As String Randomize() RandomInteger = Int(Rnd() * 51) String5 = StringArray(RandomInteger) Dim String6 As String Randomize() RandomInteger = Int(Rnd() * 51) String6 = StringArray(RandomInteger) Dim String7 As String Randomize() RandomInteger = Int(Rnd() * 51) String7 = StringArray(RandomInteger) Dim String8 As String Randomize() RandomInteger = Int(Rnd() * 51) String8 = StringArray(RandomInteger) Dim String9 As String Randomize() RandomInteger = Int(Rnd() * 51) String9 = StringArray(RandomInteger) Dim String10 As String Randomize() RandomInteger = Int(Rnd() * 51) String10 = StringArray(RandomInteger) Dim String11 As String Randomize() RandomInteger = Int(Rnd() * 51) String11 = StringArray(RandomInteger) Dim String12 As String Randomize() RandomInteger = Int(Rnd() * 51) String12 = StringArray(RandomInteger) Dim String13 As String Randomize() RandomInteger = Int(Rnd() * 51) String13 = StringArray(RandomInteger) Dim String14 As String Randomize() RandomInteger = Int(Rnd() * 51) String14 = StringArray(RandomInteger) Dim String15 As String Randomize() RandomInteger = Int(Rnd() * 51) String15 = StringArray(RandomInteger) Dim String16 As String Randomize() RandomInteger = Int(Rnd() * 51) String16 = StringArray(RandomInteger) Dim String17 As String Randomize() RandomInteger = Int(Rnd() * 51) String17 = StringArray(RandomInteger) Dim Str1 As String = String1 & String2 & String3 & String4 & String5 & String6 & String7 & String8 & String9 & String10 & String11 & String12 & String13 & String14 & String15 & String16 & String17 Console.WriteLine(Str1) End Sub End Module So I wrote basically the same function in C++. #include <iostream> #include <time.h> #include <stdlib.h> #include <stdio.h> #include <string> #include <sstream> using namespace std; string a; string b; string c; string d; string e; string f; string g; string h; string i; string j; string k; string l; string m; string n; string o; string p; string q; int RandomNumber1; int RandomNumber2; int RandomNumber3; int RandomNumber4; int RandomNumber5; int RandomNumber6; int RandomNumber7; int RandomNumber8; int RandomNumber9; int RandomNumber10; int RandomNumber11; int RandomNumber12; int RandomNumber13; int RandomNumber14; int RandomNumber15; int RandomNumber16; int RandomNumber17; string AlphaRandom[] = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}; int main() { srand(time(0)); RandomNumber1 = rand() % 51 + 0; string a = AlphaRandom[RandomNumber1]; RandomNumber2 = rand() % 51 + 0; string b = AlphaRandom[RandomNumber2]; RandomNumber3= rand() % 51 + 0; string c = AlphaRandom[RandomNumber3]; RandomNumber4= rand() % 51 + 0; string d = AlphaRandom[RandomNumber4]; RandomNumber5= rand() % 51 + 0; string e = AlphaRandom[RandomNumber5]; RandomNumber6= rand() % 51 + 0; string f = AlphaRandom[RandomNumber6]; RandomNumber7= rand() % 51 + 0; string g = AlphaRandom[RandomNumber7]; RandomNumber8= rand() % 51 + 0; string h = AlphaRandom[RandomNumber8]; RandomNumber9= rand() % 51 + 0; string i = AlphaRandom[RandomNumber9]; RandomNumber10= rand() % 51 + 0; string j = AlphaRandom[RandomNumber10]; RandomNumber11= rand() % 51 + 0; string k = AlphaRandom[RandomNumber11]; RandomNumber12= rand() % 51 + 0; string l = AlphaRandom[RandomNumber12]; RandomNumber13= rand() % 51 + 0; string m = AlphaRandom[RandomNumber13]; RandomNumber14= rand() % 51 + 0; string n = AlphaRandom[RandomNumber14]; RandomNumber15= rand() % 51 + 0; string o = AlphaRandom[RandomNumber15]; RandomNumber16= rand() % 51 + 0; string p = AlphaRandom[RandomNumber16]; RandomNumber17= rand() % 51 + 0; string q = AlphaRandom[RandomNumber17]; std::string s = static_cast<std::ostringstream&>(std::ostringstream().seekp(0) << a << b << c << d << e << f << g << h << i << j << k << l << m << n << o << p << q).str(); cout << s; return 0; } Edited January 7, 2016 by vailixi Quote
i8igmac Posted January 7, 2016 Posted January 7, 2016 (edited) [*('A'..'Z'), *('a'..'z')].sample(8).join 8chars long random string. rand(1..9) This will randomly select a single number. [*('A'..'Z), *('a'..'z')].sample(rand(3..9)).join this will generate a sting with a random value and random length(3 through 9) #ruby Edited January 7, 2016 by i8igmac Quote
cooper Posted January 7, 2016 Posted January 7, 2016 That thread about why people hate BASIC? Your code is a MAGNIFICENT demonstration of the issue. It's so awful I want to scratch my eyes out and dissolve them in acid. Did anybody ever tell you about the wonderful construct called "an array"? How about "for loop"? Did you read the documentation on "Randomize()"? (once in the lifetime of the program will suffice) Quote
Jason Cooper Posted January 7, 2016 Posted January 7, 2016 Here is a C version. #include <stdio.h> #include <stdlib.h> #include <time.h> #define RANDOM_STRING_LENGTH 17 #define MAXIMUM_ALPHABET_LENGTH 255 int main(int argc, char** argv) { char alphabet[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; char randomString[RANDOM_STRING_LENGTH + 1]; int i; int alphabetLength; alphabetLength = strnlen(alphabet, MAXIMUM_ALPHABET_LENGTH); srand(time(NULL)); for (i = 0; i < RANDOM_STRING_LENGTH; i++) { randomString[i] = alphabet[rand() % alphabetLength]; } randomString[i] = '\0'; printf("%s\n", randomString); return EXIT_SUCCESS; } Quote
Jason Cooper Posted January 7, 2016 Posted January 7, 2016 As the other Cooper wanted to see more Perl the other day (Ok, he probably didn't want to see more, but as he mentioned it I have to provide some). #!/usr/bin/perl use strict; use warnings; use constant RANDOM_STRING_LENGTH => 17; my @alphabet = ('A' .. 'Z', 'a' .. 'z', 0..9); my $alphabetLength = scalar @alphabet; my $randomString = ""; for (my $i = 0; $i < RANDOM_STRING_LENGTH; $i++) { $randomString .= $alphabet[int(rand() * $alphabetLength)]; } print "$randomString\n"; Quote
vailixi Posted January 7, 2016 Author Posted January 7, 2016 Here is a C version. #include <stdio.h> #include <stdlib.h> #include <time.h> #define RANDOM_STRING_LENGTH 17 #define MAXIMUM_ALPHABET_LENGTH 255 int main(int argc, char** argv) { char alphabet[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; char randomString[RANDOM_STRING_LENGTH + 1]; int i; int alphabetLength; alphabetLength = strnlen(alphabet, MAXIMUM_ALPHABET_LENGTH); srand(time(NULL)); for (i = 0; i < RANDOM_STRING_LENGTH; i++) { randomString[i] = alphabet[rand() % alphabetLength]; } randomString[i] = '\0'; printf("%s\n", randomString); return EXIT_SUCCESS; } This is a great example. Much more concise than what I was doing. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.