Where do gas giants end up? I want to create a semi realistic star system generator but I am not sure where to "put in" gas giants. My guess is they can form pretty much anywhere within the sphere of influence of a star at the right circumstances.

I am still debating how to exactly go about generating the system but it won't be super complicated. I probably have plop in a star with a random mass and based on modifiers like distance, reflection, greenhouse and random chance plop in certain types of planets. It does not need to be realistic but it needs to feel realistic for none astronomy experts.
What you're asking about is not known at the moment, but I can briefly comment on how flawed our knowledge is.

1.) Theoretical predictions:

As one comment mentioned, the question "where do planets end up?" is dependent on the answer to "where do planets form?" and the answer to "how fast do planets migrate?" which is not well understood at the moment.
There are of course predictions for both those processes, but those essentially don't agree on anything and especially not with the observations.

A recent overview and a very short video by the authors of that paper summarizing it.

2.) Observations:

We have only very few multi-planet systems, and not a single one where we can claim we know all planets down to a certain size or mass limit.
I suggest you take a look at the data on http://exoplanets.org/table and use the filter "NCOMP >= 5" (also sort by name), this way you get current candidate systems with equal to or more than 5 planets.
You will see there are not many systems that we can base any systematic understanding on.  

Plots like the first one in the answer to this question that seem to indicate that we know quite many systems, hide the fact that those systems are all single or double planet-systems.  

This prohibits basing your generated systems based on data or planet formation theory. But I suggest that you can use a different method:

3.) Long-term stability:

We don't know all systems that are possible, but we certainly know that all systems under certain conditions become unstable. There is an overview article or also a long video outlining that there should be a simple stability criterion for planetary systems:
If any two planets come closer to each other than ~10 mutual Hill-radii, their orbits will become unstable and possible send the whole system into chaos.
The mutual Hill radius of two planets with masses $m_1$ and $m_2$, and central star $m_s$ and semi-major axis distances $a_1$ and $a_2$ from the star is  

$$R_{hill,mutual} = \left( \frac{m_1+m_2}{3 \cdot m_s} \right)^{1/3} \cdot \frac{\left( a_1 + a_2 \right)}{2} $$

So my idea of a simple solar-system generator would be to choose some first planetary mass, place it somewhere.
Then build up the star system from the inside out planet by planet, by chosing the next planetary mass from one of the above mentioned 1-or-2-planet distributions (this one could be a realistic one, like in Mayor et al. 2011, if you know how to re-shape random distributions).
You calculate $a_2$ for them such that their mutual distance is $&gt; 10 \cdot R_{Hill,mutual}$.
In this way you'll probably get pretty packed systems, but you can of course take their mutual distances to be larger than $10 \cdot R_{mutual, Hill}$.  

So in this way the properties of your generated star systems would be:


Mutual distances: Stable physical foundation
Planetary mass distribution: Would be on shaky feet, as we don't know enough about multi-planet systems, and our data on low-multi systems is heavily biased towards the methods used to detect them.
System architecture / order of the planets: So far we've seen many unexpected things and there is no data or reason to assume there should be any strong constraints. I think here you can let your fantasy or the random masses generator roam free.


You could even go one step further and include one of the (half-way) realistic mass distributions for stars, to generate your $m_s$ values.  

Your code (e.e. if you code in C) will only be able to give you uniformly distributed random numbers. If you want them to follow a specific distribution, you need to transform them. Google "transform probability density function" or ask someone with math education that you know, if you don't know how that works.