mercredi 28 août 2019

Problem with if condition on a "random walk" script

I'm trying to make the coordinate "x" randomly move in the interval [-1,1]. However, my code works sometimes, and sometimes it doesn't. I tried ShellCheck but it says "no issues detected!". I'm new to conditionals, am I using them wrong?

I'm running this on the windows subsystem for linux. I'm editing it on nano. Since I have a script that will plot 200 of these "random walks", the code should work consistenly, but I really don't understant why it doesn't.

Here's my code:

x=0
for num in {1..15}
do
  r=$RANDOM
  if [[ $r -lt 16383 ]]
  then
    p=1
  else
    p=-1
  fi
  if [[ $x -eq $p ]]
  then
    x=$(echo "$x-$p" | bc )
  else
    x=$(echo "$x+$p" | bc )
  fi
  echo "$num $x"
done

I expect something like this:

1 -1
2 0
3 1
4 0
5 1
6 0
7 1
8 0
9 1
10 0
11 -1
12 0
13 1
14 0
15 1

But the usual output is something like this:

1 1
2 0
3 -1
4 0
5 -1
6 0
7 -1
(standard_in) 1: syntax error
8
(standard_in) 1: syntax error
9
(standard_in) 1: syntax error
10
(standard_in) 1: syntax error
11
(standard_in) 1: syntax error
12
(standard_in) 1: syntax error
13
(standard_in) 1: syntax error
14
(standard_in) 1: syntax error
15

Always stopping after a -1.

Aucun commentaire:

Enregistrer un commentaire