Hi Adrian,
You can easily update the Opportunity related to each Activity by exporting your Activity table and change your Opportunity number, from the Opportunity Column to the correct one. When all of your records have been updated, just import this saved file back to your Activity table, and each Activity should now be updated with the correct Opportunity. Make sure when you export the table, include the RecordID to use a reference field when you go to import this table again.
To answer your original question as to why your Activities are being associated with the wrong Opportunity, I require some more details. Can you let us know what procedure you are using to create/associate these Activities to the Opportunites? Is this done from within Method from the Opportunities tab, are these coming in as web leads using the Web-to-Lead form? Any further details will help us investigate this issue a little further.
-Ben