<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://ltwiki.org/index.php?action=history&amp;feed=atom&amp;title=C_Implementation_to_generate_Pseudo_Random_Numbers</id>
	<title>C Implementation to generate Pseudo Random Numbers - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://ltwiki.org/index.php?action=history&amp;feed=atom&amp;title=C_Implementation_to_generate_Pseudo_Random_Numbers"/>
	<link rel="alternate" type="text/html" href="http://ltwiki.org/index.php?title=C_Implementation_to_generate_Pseudo_Random_Numbers&amp;action=history"/>
	<updated>2026-04-07T21:13:40Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.7</generator>
	<entry>
		<id>http://ltwiki.org/index.php?title=C_Implementation_to_generate_Pseudo_Random_Numbers&amp;diff=1224&amp;oldid=prev</id>
		<title>Lewispaul at 02:29, 31 October 2013</title>
		<link rel="alternate" type="text/html" href="http://ltwiki.org/index.php?title=C_Implementation_to_generate_Pseudo_Random_Numbers&amp;diff=1224&amp;oldid=prev"/>
		<updated>2013-10-31T02:29:48Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 02:29, 31 October 2013&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;See [http://www.teaser.fr/~amajorel/noise/ http://www.teaser.fr/~amajorel/noise/] and &amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;See [http://www.teaser.fr/~amajorel/noise/ http://www.teaser.fr/~amajorel/noise/] &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;with &amp;#039;&amp;#039;premade&amp;#039;&amp;#039; wav files that can be used as inputs to LTspice &lt;/ins&gt;and &amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[http://www.maxim-ic.com/appnotes.cfm?appnote_number=1743&amp;amp;CMP=WP-9 The Maxim Application Note]&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[http://www.maxim-ic.com/appnotes.cfm?appnote_number=1743&amp;amp;CMP=WP-9 The Maxim Application Note]&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Lewispaul</name></author>
		
	</entry>
	<entry>
		<id>http://ltwiki.org/index.php?title=C_Implementation_to_generate_Pseudo_Random_Numbers&amp;diff=1220&amp;oldid=prev</id>
		<title>Lewispaul: Created page with &quot;See [http://www.teaser.fr/~amajorel/noise/ http://www.teaser.fr/~amajorel/noise/] and &lt;br&gt; [http://www.maxim-ic.com/appnotes.cfm?appnote_number=1743&amp;CMP=WP-9 The Maxim Applica...&quot;</title>
		<link rel="alternate" type="text/html" href="http://ltwiki.org/index.php?title=C_Implementation_to_generate_Pseudo_Random_Numbers&amp;diff=1220&amp;oldid=prev"/>
		<updated>2013-10-27T16:51:06Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;See [http://www.teaser.fr/~amajorel/noise/ http://www.teaser.fr/~amajorel/noise/] and &amp;lt;br&amp;gt; [http://www.maxim-ic.com/appnotes.cfm?appnote_number=1743&amp;amp;CMP=WP-9 The Maxim Applica...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;See [http://www.teaser.fr/~amajorel/noise/ http://www.teaser.fr/~amajorel/noise/] and &amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.maxim-ic.com/appnotes.cfm?appnote_number=1743&amp;amp;CMP=WP-9 The Maxim Application Note]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 *	lfsr.c&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
This file is copyright Andre Majorel 2007-2008.&lt;br /&gt;
&lt;br /&gt;
This program is free software; you can redistribute it and/or modify it under&lt;br /&gt;
the terms of version 2 of the GNU General Public License as published by the&lt;br /&gt;
Free Software Foundation.&lt;br /&gt;
&lt;br /&gt;
This program is distributed in the hope that it will be useful, but WITHOUT&lt;br /&gt;
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS&lt;br /&gt;
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
You should have received a copy of the GNU General Public License along with&lt;br /&gt;
this program; if not, write to the Free Software Foundation, Inc.,&lt;br /&gt;
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;inttypes.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdarg.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stddef.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
static void err (const char *fmt, ...);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main (int argc, char *argv[])&lt;br /&gt;
{&lt;br /&gt;
  uint32_t r = 0x12345678;&lt;br /&gt;
  uint32_t tapsmask = 0x80000062;&lt;br /&gt;
  char output_format = &amp;#039;h&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
  /*&lt;br /&gt;
   *	Parse the command line&lt;br /&gt;
   */&lt;br /&gt;
  if (argc == 2 &amp;amp;&amp;amp; strcmp (argv[1], &amp;quot;--help&amp;quot;) == 0)&lt;br /&gt;
  {&lt;br /&gt;
    printf (&lt;br /&gt;
&amp;quot;Usage:\n&amp;quot;&lt;br /&gt;
&amp;quot;  lfsr --help\n&amp;quot;&lt;br /&gt;
&amp;quot;  lfsr [-bh] [-s num] [-t num]\n&amp;quot;&lt;br /&gt;
&amp;quot;Options:\n&amp;quot;&lt;br /&gt;
&amp;quot;  -b      Binary dump in native endianness of state to stdout\n&amp;quot;&lt;br /&gt;
&amp;quot;  -h      Hex dump of state to stdout (this is the default)\n&amp;quot;&lt;br /&gt;
&amp;quot;  -s num  Seed value (default 0x%08lx)\n&amp;quot;&lt;br /&gt;
&amp;quot;  -t num  Taps mask (default 0x%08lx)\n&amp;quot;&lt;br /&gt;
	, (unsigned long) r&lt;br /&gt;
	, (unsigned long) tapsmask&lt;br /&gt;
      );&lt;br /&gt;
    exit (0);&lt;br /&gt;
  }&lt;br /&gt;
  {&lt;br /&gt;
    int g;&lt;br /&gt;
&lt;br /&gt;
    while ((g = getopt (argc, argv, &amp;quot;bhs:t:&amp;quot;)) != EOF)&lt;br /&gt;
    {&lt;br /&gt;
      if (g == &amp;#039;b&amp;#039;)&lt;br /&gt;
	output_format = &amp;#039;b&amp;#039;;&lt;br /&gt;
      else if (g == &amp;#039;h&amp;#039;)&lt;br /&gt;
	output_format = &amp;#039;h&amp;#039;;&lt;br /&gt;
      else if (g == &amp;#039;s&amp;#039;)&lt;br /&gt;
	r = strtoul (optarg, NULL, 0);  /* FIXME catch errors */&lt;br /&gt;
      else if (g == &amp;#039;t&amp;#039;)&lt;br /&gt;
	tapsmask = strtoul (optarg, NULL, 0);  /* FIXME catch errors */&lt;br /&gt;
      else if (g == &amp;#039;?&amp;#039;)&lt;br /&gt;
	exit (1);&lt;br /&gt;
      else&lt;br /&gt;
      {&lt;br /&gt;
	err (&amp;quot;unhandled option -%c, report this bug&amp;quot;, g);&lt;br /&gt;
	exit (3);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (argc &amp;gt; optind)&lt;br /&gt;
  {&lt;br /&gt;
    err (&amp;quot;too many arguments, try lfsr --help&amp;quot;);&lt;br /&gt;
    exit (1);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /*&lt;br /&gt;
   *	Crunch&lt;br /&gt;
   */&lt;br /&gt;
  fprintf (stderr, &amp;quot;lfsr: seed %08lX\n&amp;quot;, (unsigned long) r);&lt;br /&gt;
  fprintf (stderr, &amp;quot;lfsr: taps mask %08lX\n&amp;quot;, (unsigned long) tapsmask);&lt;br /&gt;
  for (;;)&lt;br /&gt;
  {&lt;br /&gt;
    if (output_format == &amp;#039;h&amp;#039;)&lt;br /&gt;
    {&lt;br /&gt;
      if (printf (&amp;quot;%08lx\n&amp;quot;, (unsigned long) r) &amp;lt; 1)&lt;br /&gt;
      {&lt;br /&gt;
	err (&amp;quot;-: write error&amp;quot;);&lt;br /&gt;
	exit (2);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    else if (output_format == &amp;#039;b&amp;#039;)&lt;br /&gt;
    {&lt;br /&gt;
      if (fwrite ((char *) &amp;amp;r, sizeof r, 1, stdout) != 1)&lt;br /&gt;
      {&lt;br /&gt;
	err (&amp;quot;-: write error&amp;quot;);&lt;br /&gt;
	exit (2);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (r &amp;amp; 1)&lt;br /&gt;
      r = (1 &amp;lt;&amp;lt; 31) | ((r ^ tapsmask) &amp;gt;&amp;gt; 1);&lt;br /&gt;
    else&lt;br /&gt;
      r &amp;gt;&amp;gt;= 1;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
static void err (const char *fmt, ...)&lt;br /&gt;
{&lt;br /&gt;
  va_list argp;&lt;br /&gt;
&lt;br /&gt;
  fflush (stdout);			/* FIXME catch errors */&lt;br /&gt;
  fputs (&amp;quot;lfsr: &amp;quot;, stderr);		/* FIXME catch errors */&lt;br /&gt;
  va_start (argp, fmt);&lt;br /&gt;
  vfprintf (stderr, fmt, argp);		/* FIXME catch errors */&lt;br /&gt;
  va_end (argp);&lt;br /&gt;
  fputc (&amp;#039;\n&amp;#039;, stderr);			/* FIXME catch errors */&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lewispaul</name></author>
		
	</entry>
</feed>