一个很简单的拼图初始化算法. 大家评价下.该怎么解决

一个很简单的拼图初始化算法. 大家评价下.
以最简单的数字拼图为例,目标状态是:
123
456
780
(0代表空块)

那么我在开始游戏时的打乱算法则是,
在0~4中随机产生一个数字,如果0由0往上移(即与0上面的一个数字交换).
依此,1往下,2往左,3往右..只要保证一下不让0移到界外去就行.

执行这个方法几十次,就可以打乱整拼图了.而且保证有解,   因为最不幸的情况也有唯一解,就是把刚才的移动全部倒过来再做一遍就好了.

现在的问题是我想知道,   我的这个算法会不会每次都只产生一个唯一解//

会的话好像有点恐怖...........> _ <

有没有人有更好的拼图初始化算法`?????

------解决方案--------------------
偶也是这么做的,肯定不会只有唯一解,再不济2323来回移动两次不也变成别的解了么?
------解决方案--------------------
不会只有唯一解
------解决方案--------------------
目前还是你这个办法好。哎。
我也在想别的初始化办法,暂时没个头绪。
要是楼主你想到了,别忘了给我留个言共享下,我也想要啊。