Sponsored Content
Full Discussion: Random variables
Top Forums Shell Programming and Scripting Random variables Post 302625161 by drl on Tuesday 17th of April 2012 10:45:57 AM
Old 04-17-2012
Hi.

Here are two more solutions, both using different perl modules.

Observations: the shuffle would not return any duplicates, the Data/Random would not return duplicates until the result is quite long -- longer than the source strings (this is partly a guess and partly observation), the Data/Random/String can return duplicates as seen below.

The choice depends on the application.

Code:
#!/usr/bin/env bash

# @(#) s1	Demonstrate perl modules for string of random characters.

pe() { for _i;do printf "%s" "$_i";done; printf "\n"; }
pl() { pe;pe "-----" ;pe "$*"; }
db() { ( printf " db, ";for _i;do printf "%s" "$_i";done;printf "\n" ) >&2 ; }
db() { : ; }
C=$HOME/bin/context && [ -f $C ] && $C perl

var=`perl -MList::Util=shuffle -le '@s = shuffle (a..z, 0..9); print @s[0..7]'`
pl "Random list as string (shuffle): $var"

var=$(perl -e 'use Data::Random qw(:all);print join("",rand_chars(set => 'alphanumeric', size => 8)),"\n";' ) 
pl " Random list as string (Random): $var"

var=$(perl -e 'use Data::Random::String; print Data::Random::String->create_random_string(length=>8, contains=>"alphanumeric"),"\n";')
pl " Random string (String): $var"

exit 0

producing:
Code:
% ./s1

Environment: LC_ALL = C, LANG = C
(Versions displayed with local utility "version")
OS, ker|rel, machine: Linux, 2.6.26-2-amd64, x86_64
Distribution        : Debian GNU/Linux 5.0.8 (lenny) 
bash GNU bash 3.2.39
perl 5.10.0

-----
Random list as string (shuffle): g2lto9kn

-----
 Random list as string (Random): s6S5A8tD

-----
 Random string (String): 6E6wfo0C

Best wishes ... cheers, drl
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Random

My problem is as follow and i hope you can help: I currently have this function: stored_word() { number=$RANDOM let "number %= 21" case $number in 0 ) echo "energy" ;; 1 ) echo "touch" ;; 2 ) echo "climbing" ;; 3 ) echo "declare" ;; 4 ) echo "marry" ;; 5 ) echo "relax" ... (8 Replies)
Discussion started by: keyvan
8 Replies

2. Shell Programming and Scripting

$random

I need to use the $RANDOM command to get a line from a list of lines in a file randomly. file is help go three house film how do i randomly get one word without looking into the file? (6 Replies)
Discussion started by: relle
6 Replies

3. Programming

How to convert byteArray variables to HexaString variables for Linux?

Hello everybody, I am having problem in converting byte array variables to Hexa String variables for Linux. I have done, converting byte array variables to Hexa String variables for Windows but same function doesn't work for linux. Is there any difference in OS ? The code for Windows is given... (2 Replies)
Discussion started by: ritesh_163
2 Replies

4. UNIX for Dummies Questions & Answers

random words

Hi there folks, for an exercise for my pupils (you know i am always thinking of them!) i need to randomly re-arrange the words (blank space separated) in a sentence (a line in a textfile). Any inspiration?? Txk so much. (9 Replies)
Discussion started by: eldeingles
9 Replies

5. Ubuntu

expect script for random password and random commands

Hi I am new to expect. Please if any one can help on my issue its really appreciable. here is my issue: I want expect script for random passwords and random commands generation. please can anyone help me? Many Thanks in advance (0 Replies)
Discussion started by: vanid
0 Replies

6. Shell Programming and Scripting

Need to generate a file with random data. /dev/[u]random doesn't exist.

Need to use dd to generate a large file from a sample file of random data. This is because I don't have /dev/urandom. I create a named pipe then: dd if=mynamed.fifo do=myfile.fifo bs=1024 count=1024 but when I cat a file to the fifo that's 1024 random bytes: cat randomfile.txt >... (7 Replies)
Discussion started by: Devyn
7 Replies

7. Shell Programming and Scripting

Running a script with multiple variables like 25 variables.

Hi All, i have a requirement where i have to run a script with at least 25 arguements and position of arguements can also change. the unapropriate way is like below. can we achieve this in more good and precise way?? #!/bin/ksh ##script is sample.ksh age=$1 gender=$2 class=$3 . . .... (3 Replies)
Discussion started by: Lakshman_Gupta
3 Replies

8. Shell Programming and Scripting

BASH arrays and variables of variables in C++

Sometimes it is handy to protect long scripts in C++. The following syntax works fine for simple commands: #define SHELLSCRIPT1 "\ #/bin/bash \n\ echo \"hello\" \n\ " int main () { cout <<system(SHELLSCRIPT1); return 0; } Unfortunately for there are problems for: 1d arrays:... (10 Replies)
Discussion started by: frad
10 Replies

9. Shell Programming and Scripting

Passing awk variables to bash variables

Trying to do so echo "111:222:333" |awk -F: '{system("export TESTO=" $2)}'But it doesn't work (2 Replies)
Discussion started by: urello
2 Replies

10. UNIX for Dummies Questions & Answers

How to pass variables into anothother variables?

Below are three variables, which I want to pass into variable RESULT1 username1=userid poihostname1=dellsys.com port1=8080 How can I pass these variables into below code... RESULT1=$((ssh -n username1@poihostname1 time /usr/sfw/bin/wget --user=sam --password=123 -O /dev/null -q... (4 Replies)
Discussion started by: manohar2013
4 Replies
String::Random(3pm)					User Contributed Perl Documentation				       String::Random(3pm)

NAME
String::Random - Perl module to generate random strings based on a pattern SYNOPSIS
use String::Random; $foo = new String::Random; print $foo->randregex('ddd'); # Prints 3 random digits print $foo->randpattern("..."); # Prints 3 random printable characters or use String::Random qw(random_regex random_string); print random_regex('ddd'); # Also prints 3 random digits print random_string("..."); # Also prints 3 random printable characters DESCRIPTION
This module makes it trivial to generate random strings. As an example, let's say you are writing a script that needs to generate a random password for a user. The relevant code might look something like this: use String::Random; $pass = new String::Random; print "Your password is ", $pass->randpattern("CCcc!ccn"), " "; This would output something like this: Your password is UDwp$tj5 If you are more comfortable dealing with regular expressions, the following code would have a similar result: use String::Random; $pass = new String::Random; print "Your password is ", $pass->randregex('[A-Z]{2}[a-z]{2}.[a-z]{2}d'), " "; Patterns The pre-defined patterns (for use with "randpattern()" and "random_pattern()") are as follows: c Any lowercase character [a-z] C Any uppercase character [A-Z] n Any digit [0-9] ! A punctuation character [~`!@$%^&*()-_+={}[]|:;"'.<>?/#,] . Any of the above s A "salt" character [A-Za-z0-9./] b Any binary data These can be modified, but if you need a different pattern it is better to create another pattern, possibly using one of the pre-defined as a base. For example, if you wanted a pattern "A" that contained all upper and lower case letters ("[A-Za-z]"), the following would work: $foo = new String::Random; $foo->{'A'} = [ 'A'..'Z', 'a'..'z' ]; or $foo = new String::Random; $foo->{'A'} = [ @{$foo->{'C'}}, @{$foo->{'c'}} ]; The random_string function, described below, has an alternative interface for adding patterns. Methods new new max => number Create a new String::Random object. Optionally a parameter "max" can be included to specify the maximum number of characters to return for "*" and other regular expression patters that don't return a fixed number of characters. randpattern LIST The randpattern method returns a random string based on the concatenation of all the pattern strings in the list. It will return a list of random strings corresponding to the pattern strings when used in list context. randregex LIST The randregex method returns a random string that will match the regular expression passed in the list argument. Please note that the arguments to randregex are not real regular expressions. Only a small subset of regular expression syntax is actually supported. So far, the following regular expression elements are supported: w Alphanumeric + "_". d Digits. W Printable characters other than those in w. D Printable characters other than those in d. . Printable characters. [] Character classes. {} Repetition. * Same as {0,}. ? Same as {0,1}. + Same as {1,}. Regular expression support is still somewhat incomplete. Currently special characters inside [] are not supported (with the exception of "-" to denote ranges of characters). The parser doesn't care for spaces in the "regular expression" either. Functions random_string PATTERN,LIST random_string PATTERN When called with a single scalar argument, random_string returns a random string using that scalar as a pattern. Optionally, references to lists containing other patterns can be passed to the function. Those lists will be used for 0 through 9 in the pattern (meaning the maximum number of lists that can be passed is 10). For example, the following code: print random_string("0101", ["a", "b", "c"], ["d", "e", "f"]), " "; would print something like this: cebd BUGS
This is Bug Free(TM) code. (At least until somebody finds one...) AUTHOR
Steven Pritchard <steve@silug.org> SEE ALSO
perl(1). perl v5.10.0 2009-06-11 String::Random(3pm)
All times are GMT -4. The time now is 08:05 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy